Spring Boot的配置文件
1.Spring Boot使用一个全局配置文件,放置在src/main/resources目录或类路径/config下:
- application.properties
- application.yml
2.配置文件的作用:修改Spring Boot自动配置的默认值
3.yml时YAML(YAML Ain't Markup Language)不是一个标记语言
- 标记语言,以前的配置文件,大多数使用的是xml文件进行配置,例如web.xml
- YAML:以数据为中心,配置数据的时候具有面向对象的特征;比json、xml等更适合做配置文件
YAML语法格式
-
key: value表示一对键值对(冒号后面必须有空格)
-
使用空格缩进表示层级关系
-
左侧缩进的空格数目不重要,只要同一层级的元素左侧对齐即可
-
key与value大小写敏感

YAML常用写法
- 字面量:数值、字符串、布尔、日期
- 对象&Map
key: value存储对象,每个值换一行写

行内写法
![]()
- 数组(List,Set)
用 - 值表示数组中的一个元素

行内写法
![]()
yaml配置文件注入值
/**
* 1、@ConfigurationProperties告诉SpringBoot将配置文件对应的属性映射到这个组件类中,自动进行一一绑定
* 2、prefix = "emp"配置文件的前缀名
* 3、@Component 必须将当前组件作为SpringBoot中的一个组件,才能使用容器提供的@ConfigurationProperties功能
*
*/
@ConfigurationProperties(prefix = "emp")
@Component
@Data
public class Emp {
private String lastName;
private Integer age;
private Double salary;
private Boolean boss;
private Date birthday;
private Map map;
private List list;
}
yml文件配置

比较@Value和@ConfigurationProperties获取值
使用@Value获取值,把Emp类中@ConfigurationProperties注释掉
//@ConfigurationProperties(prefix = "emp")
@Component
@Data
public class Emp {
@Value("${emp.lastName}")//${key}从配置文件中获取值
private String lastName;
private Integer age;
@Value("#{2*2000}")//#{SpEL}表达式
private Double salary;
private Boolean boss;
private Date birthday;
private Map map;
private List list;
}
| @ConfigurationProperties | @Value | 示例 | |
| 实现功能 | 批量注入配置文件的属性值 | 一个一个指定 | |
| 松散绑定 | 支持 | 不支持 |
last_name==lastName last-name == lastName |
| SpEL | 不支持 | 支持 | #{10*2} |
| 复杂类型封装 | 支持 | 不支持 | |
| JSR303数据校验 | 支持 | 不支持 |
加载指定配置文件@PropertySource(加载局部配置文件)
@ConfigurationProperties默认从全局配置文件(application.properties/application.yml)中获取值,所有的配置数据都写在全局配置文件中,显的过于臃肿,放到其他局部配置文件中。
@PropertySource:用于加载局部配置文件。
将全局配置文件中的相关的emp数据抽取到/resource/emp.properties

@ImportResource使用xml配置
SpringBoot提倡无xml配置,但实际开发中可能会有一些特殊要求要求是用xml配置,我们可以通过@importResource来加载配置文件。

471

被折叠的 条评论
为什么被折叠?



