1. 配置文件
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
application.properties
语法结构 :key=value
application.yml
语法结构 :key:(空格) value
2. 配置文件的作用
修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;
3. yaml与xml对比
yaml:
server:
prot: 8080
xml:
<server>
<port>8081<port>
</server>
4. yaml基础语法
对空格非常的严格
properties只能是键值对的形式,而yaml有很多的形式。
注意:
- “ ” 双引号,不会转义字符串里面的特殊字符
- ‘’ 单引号,会转义特殊字符 .
4.1 对象、Map(键值对)
student:
name: zhangsan
age: 103
4.2 行内写法
student: {name: zhangsan,age: 103}
4.3数组( List、set )
用 - 值表示数组中的一个元素,比如:
pets:
- cat
- dog
- pig
行内写法
pets: [cat,dog,pig]
4.4 修改端口号
server:
port: 8082
5. 案例
5.1 新建实体类
Dog.java
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dog {
private String name;
private int age;
}
Person .java
@ConfigurationProperties(prefix = “person”):表示将配置文件的属性与实体类属性一一的绑定在一起
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person") //使用yaml注解时
//@PropertySource(value = "classpath:application.properties")
public class Person {
//用properties配置文件时,使用EL表达式取值
//@Value("name")
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
}
5.2 编写配置文件
5.2.1 方式一:application.yaml
在resources文件夹下建立application.yaml,其内容如下:
person:
name: zhangsan
age: 103
happy: false
birth: 2021/5/16
maps: {k1: v1,k2: v2}
lists:
- book
- swim
- basketball
dog:
name: zhansan
age: 103
5.2.2 方式二:使用application.properties
name:zhangsan
5.3 测试
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
5.4 结果
方式一:
方式二:
6. @ConfigurationProperties与@Value区别
- 松散绑定:比如yml中写的last-name,实体类写lastName是一样的,后面跟着的字母默认是大写的。
- JSR303数据校验:我们可以在字段是增加一层过滤器验证,可以保证数据的合法性。
- 复杂类型封装:yml中可以封装对象,使用@value就不支持。
7. 可能会遇到的问题
7.1 使用@ConfigurationProperties注解IDEA顶部会标红
解决方案:@ConfigurationProperties需要注解处理器,所以导入相应的依赖即可
<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
7.2 测试过程报错
找不到或无法加载主类 com.xxx.xxx.Application
解决方案:
-
- 点击clean
-
- 再点击install
-
- 点击测试
- 点击测试
7.3 配置文件使用properties时可能会乱码
解决方案:settings-------->File Encodings
内容参考:https://www.bilibili.com/video/BV1PE411i7CV
仅用于学习!