在 Spring 项目中,我们必须自行创建 Spring 的配置文件,通常命名为 "spring-config.xml" 。但在 SpringBoot 中无需自行创建,在 SpringBoot 项目创建时就存在了即 application.properties 文件。它的用处:
- 设置项目的启动端口
- 设置数据库连接信息
- 发现和定位普通日志或异常日志
- 第三方的密钥调用信息等
SpringBoot 的配置文件有两种格式即以 .properties 为后缀和以 .yml 为后缀。可分别理解为老版与新版,且两种配置文件能够共存,但 .properties 后缀文件优先级较高。下面我就来讲解两种配置文件。
目录
1. properties文件
1.1 properties 的基础语法
1.2 读取properties文件
1.3 设置热部署
1.4 properties 缺点
2. yml文件
2.1 yml 语法格式
2.2 读取yml文件
2.3 yml配置对象
1. properties文件
首先,我们在创建好 SpringBoot 项目后,application.properties 文件已经存在了,我们可以在 resources 底下查看。
1.1 properties 的基础语法
properties 文件内使用的内容是以键值对的形成,键和值之间使用 = 进行连接,注释使用 # 开头,如将端口号设置为 8081。
此时,我们在项目的 java 路径底下创建一个 TestControler 类来使用端口 8081 来运行 SpringBoot 项目,代码如下:
package com.example.demo;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody
public class TestController {@RequestMapping("/sayHi")public String sayHi() {return "Hello SpringBoot";}
}
运行代码并在浏览器中输入 localhost:8081/sayHi 结果如下:
1.2 读取properties文件
此外,在 properties 文件中可以自定义内容,如下属内容按照键值对的形式定义即可,获取方法是使用过 @Value 注释,格式为:@Value("${路径}")。
@Controller
@ResponseBody
public class TestController {@Value("${my.path}")private String path ;@RequestMapping("/sayHi")public String sayHi() {return "Hello SpringBoot" + path;}
}
1.3 设置热部署
当我们每次修改代码后,都需要重新启动项目才能达到效果,因此我们可以热部署一下,使项目不用重启程序也能执行。以下为设置步骤:
(1) 下载 EditStarters
先在 Settings 的 Plugins 中下载 EditStarters ,这样我们在 pom.xml 中就能很轻松的添加一些框架和支持。
(2)添加 springboot-dev-tool 框架
在 pom.xml 文件中空白处右击,并点击 Generate
再点击 Edit Starters
最后按照下面步骤添加即可。
(3)启用Build project automatically 功能
(4)开启热部署
1.4 properties 缺点
当我们想使用某个功能时,很多数据会重复。如连接数据库时,下图所示:
我们发现每行都写了 spring.datasource ,因此我们可以使用 yml 文件来避免重复数据,由于 yml 文件的特定格式。
2. yml文件
yml 是 YAML 的缩写,全称为“YAML Ain’t Markup Language”,意为“另一种标记语言”。因此,你在项目中 以 .yml 或者 .yaml 结尾都行。它的优点:
- 可读性较高,写法简单,语法与JSON类似
- yml支持多种数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
- yml 支持多种编程语言,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中
2.1 yml 语法格式
由于 yml 是树形结构,它是以键值对的形式组成的,key 和 value 之间使用 : 号 + 空格的形式组成。
yml 连接数据库:
相比上述使用 properties 文件,更为简洁但需要注意的格式不能出错。
2.2 读取yml文件
也是通过 @Value 注解来获取,语法为 @Value("${路径}"),具体讲解在 1.2 读取properties文件 中。
2.3 yml配置对象
使用@ConfigurationProperties注解:
@ConfigurationProperties注解在Java中的作用是将配置文件中的属性绑定到Java类上,从而简化配置管理和提高可读性。它主要用于 Spring 框架中,特别是 SpringBoot 应用。通过使用 @ConfigurationProperties,可以将 application.properties 或 application.yml 中的配置属性映射到Java类的属性上,实现配置的自动装配和验证
我们在 yml 文件中可创建一个对象,如下图所示。
创建一个类 User,并使用 Configurationproperties("对象名称") 注解。并且将该类添加类注解,加类注解是为了 SpringBoot 项目启动时,被该注解的内容也能被加载。
@ConfigurationProperties("user")
@Component
public class User {int id;int age;@Overridepublic String toString() {return "User{" +"id=" + id +", age=" + age +'}';}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
再创建一个 UserController 类用来获取到 User 对象。解释 @PostConstruct 注解:
@PostConstruct
是Java中的一个注解,用于标注在方法上,该方法会在类的构造函数执行完毕后、其它方法执行前执行。该注解属于javax.annotation
包,需要Java SE 5.0版本以上才支持。常见的用途是在Spring框架中,用于执行一些初始化操作,例如初始化一些资源,加载配置文件等。
@Component
public class UserController {@Autowiredprivate User user;@PostConstructpublic void showUser() {System.out.println(user);}
}
运行项目后:
以上就是 yml 配置一个对象的流程,当然 yml 还能配置集合等其他内容,感兴趣可以自行搜索资料。
今天的博客到这里就结束了,感谢各位的观看。