spring boot使用一个全局配置文件:主要是以下两种类型
application.properties :例:server.port=9998
application.yml(YAML) :例:server:
port:8080
配置文件的作用主要是修改spring boot在底层的默认配置
yml:以数据为中心。
基本语法:
key:(这里一定要有个空格) value表示一对键值对
以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的 。
值的写法:
字面量:普通的 值(数字,字符串,布尔):
key: value 字面量直接来写,字符串不用加单引号或者双引号
" " :双引号,不会转义字符串里面的特殊字符,写了什么就是什么,比如在双引号中写了\n (转移后为换行),但是这里就只是\n 并不会换行
‘ ‘ :会转义
对象(属性和值)(键值对):
key: value : (注意空格和缩进)
filed: value
例如:
people:
name: zhangs
age: 20
peopleName = people-name
行内写法:people: {name: zhangs,age: 20}
数组(list set):
例如:
animals:
- cat
- dog
- pig
行内写法:animals: [cat,dog,pig]
配置文件占位符:${random.uuid} ${people.hello:hello}如果系统中没有定义people.hello,默认值为hello
@Component
@ConfigurationProperties(prefix="shelter")
//@PropertySource("classpath:shelter.properties")
public class ShelterConfig {
//@Value("${shelter.upload.path}")
private String uploadPath ;
//@Value("${shelter.pageHelp.pageSize}")
private Integer pageSize ;
}
如此便可以将配置文件中的配置读到配置类中
@ConfigurationProperties:告诉spring boot将本类中的属性和配置文件中的相关值进行绑定,通过其中有个prefix=“shelter”,表示将具有shelter前缀下面的属性进行 一 一 映射,
以上类必须是容器中的组件才能使用此功能 所以还需要加个注解@Component
另一种获取值的方法
@Component
//@ConfigurationProperties(prefix="shelter")
@PropertySource("classpath:shelter.properties")
public class ShelterConfig {
@Value("${shelter.upload.path}")
private String uploadPath ;
@Value("${shelter.pageHelp.pageSize}")
private Integer pageSize ;
}
@PropertySource:加载指定的配置文件,如果不加这个注解,会去全局配置文件里面去查找。
@ImportResource:导入自己编写的spring的配置文件,让配置文件内容生效,比如可以自己编写一个xml通过此方法进行注入将@ImportResource(locations={"classpath:xxx.xml"})标注在配置类中,比如主程序类。
<!-- 配置文件处理器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
这个依赖就是在编写配置文件的 时候有提示。不引入此依赖便不会有提示
多Profile文件:
配置文件编写的时候:创建配置文件application.properties application-dev.properties , application-prod.properties,默认使用application.properties该配置。如果要使用生产和开发环境,可以在该文件中设置属性spring.profiles.active = dev 来激活
可以使用yml多文档块的方式去实现以上的需求,每个文档快以 --- 来分割
也可以在使用java -jar xxx.jar的时候增加一行命令 --spring.profiles.active = dev来实现
配置文件的加载顺序:下面4个文件目录是spring会自动识别的加载主配置文件,优先级由高到低,高优先级的在遇到相同的配置的时候会去覆盖低优先级的配置文件信息
file:/config/
file:/
classpath:/config/
classpath:/
来源:oschina
链接:https://my.oschina.net/u/4306681/blog/3945287