一、SpringBoot配置文件
1、配置文件(全局配置文件)
application.yml application.properties 作用:修改SpringBoot的默认配置 名字固定。
1.1、yml的基本语法
k: v kv之间需要有空格 以空格的缩进来控制层级关系。 属性和值也是大小写敏感的。
1.2、值的写法
字面量(数字,布尔,字符串)字符串默认不加引号,单引号会转义特殊字符,如\n不会换行,双引号不会转义特殊字符\n就会换行。 对象,Map
person :
name : 陈旭敏
age : 21
person : { name : 陈旭敏, age : 21 }
数组,List,set
pets :
- cat
- dog
pets : [ dog, cat, pig]
1.3、配置文件值的注入
1.3.1@ConfigurationProperties赋值
将yml配置文件中的值通过@ConfigurationProperties注解和javabean中的值进行绑定。 @ConfigurationProperties(prefix = “perosn”)和配置文件中哪个下面的所有属性进行映射。 使用@Component 来将类作为组件加入容器中,才能使用@ConfigurationProperties功能。 SpringBoot单元测试 @RunWith(SpringRunner.class)和@SpringBootTest 支持松散语法绑定 支持JSR303数据校验 如@Email 支持复杂类型封装
1.3.2@Value()赋值
@value("${person.name}")支持表达式 @value("#{11*2}")支持运算 不支持松散语法绑定 不支持复杂类型封装,如@value("${person.maps}")
1.3.3 各自适用场景
@ConfigurationProperties适合写一个javaBean与之映射 @value适合个别值映射
2 配置文件(指定的配置文件)
@propertySource(value = {calss:person.properties}),绑定指定的配置文件 @ImportResource 导入指定的spring的配置文件。写在主配置类上 @ImportResource(locations = {“classpath:beans.xml”})。一般不这样使用,通常使用配置类配置。 配置类,在配置文件中使用@Configuration标识类,指定该类是一个配置类。@Bean标识方法,将方法的返回值添加到容器。用配置类的方式代替配置文件。 配置文件支持占位符和随机数。随机数
r
a
n
d
o
m
.
i
n
t
,
占
位
符
获
取
之
前
配
置
的
值
,
若
没
有
则
获
取
默
认
值
。
{random.int},占位符获取之前配置的值,若没有则获取默认值。
r a n d o m . i n t , 占 位 符 获 取 之 前 配 置 的 值 , 若 没 有 则 获 取 默 认 值 。 {person.hello:hello}
3 profile(切换环境)
多profile文件,在配置文件中指定spring,profiles.active=dev yml支持多文档快模式。
spring :
profiles :
active : dev
激活指定的profile(命令行方式和虚拟机参数)
4、配置文件加载顺序
文件根目录的config文件夹>文件根目录>类路径config文件夹>类路径。 高优先级配置会覆盖低优先级配置。 SpringBoot会从四个位置全部加载,会形成互补配置。serve.port=8081,serve.context-path=/boot02 指定配置文件位置spring.config.location,项目打包后用命令行方式指定生效。 外部配置文件加载顺序
5、 自动配置原理
spring.factories的xxxAutoConfiguration类都是容器中的组件,都加到容器中,用他们来配置。 每一个自动配置类进行自动配置功能 通过HttpEncoddingAutoConfiguration为例解释自动配置原理