SpringBoot配置文件
🍁博客主页:👉不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉SpringBoot专栏
🔥欢迎大佬指正,一起学习!一起加油!
🍁介绍
- springboot支持二种类型的配置文件
• properties属性配置文件
• yaml配置文件 - 配置文件必须放置在项目的类加载目录下, 并且名字必须是application
- springboot项目在运行的时候会自动加载这些配置文件
🍁属性配置文件
- 使用配置文件配置连接池信息,并将配置文件中的内容读取到对象中
- 编写配值文件,在 resource 文件夹下面新建 application.properties 配置文件
spring.jdbc.datasource.driverClassName=com.mysql.jdbc.driver
spring.jdbc.datasource.url=jdbc:mysql:///springboot
spring.jdbc.datasource.username=root
spring.jdbc.datasource.password=root
- 新建 properties 包,创建类 DataSourceProperties
@Component
public class DataSourceProperties {
@Value("${spring.jdbc.datasource.driverClassName}")
private String driverClassName;
@Value("${spring.jdbc.datasource.url}")
private String url;
@Value("${spring.jdbc.datasource.username}")
private String username;
@Value("${spring.jdbc.datasource.password}")
private String password;
public String getDriverClassName() {
return driverClassName;
}
public String getUrl() {
return url;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "DataSourceProperties{" +
"driverClassName='" + driverClassName + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 编写Controller类
@RestController
public class HelloController {
@Autowired
private DataSourceProperties dataSourceProperties;
@RequestMapping("/hello")
public String index(){
System.out.println(dataSourceProperties);
return "Hello SpringBoot!!!";
}
}
- 启动启动类,进行测试(注意控制台输出信息)
🍁YAML配置文件
-
YAML是一种配置文件格式
-
语法 :
- 数据结构用树形结构呈现,通过缩进来表示层级,
- 连续的项目通过减号 ” - ” 来表示
- 键值结构里面的key/value对用冒号 ” : ” 来分隔。
- YAML配置文件的扩展名是yaml 或 yml
-
测试yml和properties配置文件哪个优先级比较高
-
新建 application.yml 配置文件
spring:
jdbc:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql:///springboot_test
userName: root
password: root
- 启动测试,通过控制台输出信息可知,
properties>yml
🍁多环境profile切换配置
- spring boot项目中允许使用多个YAML配置文件。
这些文件名称必须为application-***.yml,并且在application.yml中激活。
- 创建application-dev.yml
spring:
jdbc:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql:///springboot_dev
userName: root
password: root
- 创建application-pro.yml
spring:
jdbc:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql:///springboot_pro
userName: root
password: root
- 在 application.yml 文件中添加如下配置,激活配置文件
spring:
jdbc:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql:///springboot_test
userName: root
password: root
#配置使用哪个环境
profiles:
active: dev
- 测试
- 更改为pro环境进行测试
profiles:
active: pro
- 如果properties和yml文件都存在,不存在spring.profiles.active设置,如果有重叠属性,默认以properties优先。
- 如果设置了spring.profiles.active,并且有重叠属性,以active设置优先。
- 可以在两种文件中分别增加server.port属性指定不同的端口,启动项目查看控制台端口号进行测试。
🍁@ConfigurationProperties批量注入
- 这种注入方式,属性再多,只要按照规则就可以一次性自动注入
- 创建类DataSourceConfigurationProperties
@Component
@ConfigurationProperties(prefix = "spring.jdbc.datasource") //批量注入
public class DataSourceConfigurationProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "DataSourceConfigurationProperties{" +
"driverClassName='" + driverClassName + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 注意:
spring boot configuration annotation processor not configured 错误解决方案
- 在pom.xml中增加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
- 可能会出现乱码,在setting -> editor -> file Encodings中修改编码,修改一下UTF-8,错误就可以解决了。
-
在类上通过@ConfigurationProperties注解声明该类要读取属性配置
-
prefix=“spring.jdbc.datasource” 读取属性文件中前缀为spring.jdbc.datasource的值。前缀和属性名称和配置文件中的key必须要保持一致才可以注入成功
-
Spring Boot默认读取application.properties属性文件
-
开启@ConfigurationProperties注解使用
@RestController
@EnableConfigurationProperties(DataSourceConfigurationProperties.class)
public class HelloController {
@Autowired
private DataSourceConfigurationProperties dataSourceConfigurationProperties;
@RequestMapping("/hi")
public String indexTwo(){
System.out.println(dataSourceConfigurationProperties);
return "Hello SpringBoot dataSourceConfigurationProperties!!!";
}
}
- 输入请求地址进行测试