date: 2019-12-27 09:00:00
updated: 2019-12-30 13:20:00
学习教程来自:B站 尚硅谷
键值对写法:必须要有空格! k: v
v 的一些写法
v 是对象
friends:
name: zhangsan
age: 20
行内写法:
friends: {name: zhangsan, age: 20}
v 是数组
pets:
- cat
- dog
行内写法:
pets: [cat,dog]
默认编码是 utf-8 编码,在获取其中的中文时可能有问题,需要修改一下设置
在 settings -> File Encodings 中勾选 “Transparent native-to-ascii conversion”
@ConfigurationProperties
@ConfigurationProperties(prefix = "?")
告诉 SpringBoot 将本类中的所有属性和篇日志文件中相关的配置进行绑定
参数 prefix 指定配置文件中某一个 key 下的所有属性进行一一映射
@Value
@Value
使用 $ 来获取配置中的值,或者使用 # 来实时计算
@Value("${person.last-name}")
private String name;
@Value("#{11*2}")
private int age;
xxx
功能
批量注入配置文件中的属性
一个个指定
松散绑定
支持
不支持
SpEL
不支持
支持
JSR303数据校验
支持
不支持
复杂类型封装 eg:map
支持
不支持
@Validated
,在变量前加入注解比如 @Email
,可以自动识别是否符合邮箱格式如果只是简单获取一下配置的值,就用@Value
@PropertySource(value={"classpath:person.properties"})
@ImportResource(locations={"classpath:xxx.xml"})
#name: zhangsan
age: ${random.int} # 随机数
pet: ${name:zs}_dog # 获取前面 key 为 name 的值,如果没有,用默认值 zs 代替
使用 properties 文件,多 profiles 的形式
application.properties: 主配置文件
application-dev.properties: 测试配置文件
application-prod.properties: 生产配置文件
默认启动的时候会激活主配置文件,切换配置文件时,在主配置文件中添加
spring.profiles.active=dev/prod
appication.yml 使用 --- 三个横线可以在一个文件中添加多个文档块,相当于编写了好几个文档
server:
port: 8081
spring:
profiles:
active:dev
---
server:
port: 8082
spring:
profiles: dev
---
server:
port: 8083
spring:
profiles: prod
优先级由高到低;相同配置项以高优先级的配置为主;互补配置(会全部加载)
Spring Boot 启动时加载主配置类,开启自动配置功能 @EnableAutoConfiguration
@EnableAutoConfiguration
的作用:
利用 AutoConfigurationImportSelector.class
给容器导入一些组件
通过 selectImports()
方法来确定哪一些配置被导入
List
protected List
// 扫描所有 jar 包类路径下的 META-INF/spring.factories
// 把扫描到的文件内容包装成properties对象
// 从properties中获取到EnableAutoConfiguration.class类对应的值,添加到容器中
List
Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");
return configurations;
}
=>
将类路径 META-INF/spring.factories
下配置的所有 EnableAutoConfiguration.class
的值加入到容器中
eg: xxxAutoConfiguration.class
每一个这样的类都是容器中的一个组件,加入到容器后,再用他们来做自动配置
能配置的属性都来源于 xxxAutoConfiguration.class
类对应的 xxxProperties.class
类
在 xxxProperties.class
类前会有很多注解,比如 @ConditionalOnWebApplication
用来判断是否是一个web应用,如果是返回true,下面的内容才生效,等等注解。即自动配置类是需要在一定条件下才能生效
可以通过在 application.properties
文件中添加 debug=true
来打印出自动配置报告,看到哪一类自动配置类启动了哪一些没启动
总结:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章