1.YAML
2.properties
1.YAML
YAML:以数据为中心,比json、xml等更适合做配置文件
#yaml
server:
port: 8081
<!-- xml -->
<server>
<port>8081</port>
</server>
1. 基本语法
k:(空格)v: 表示一对键值对(空格必须有)
属性和值也是大小写敏感
server:
port: 8081
path: /hello
2. 值的写法
2.1 普通的值
k: v:
字符串默认不用加单引号或双引号
"": 双引号,不会转移字符串中的特殊字符
'': 单引号,会转移特殊字符,特殊字符只是一个普通的字符
2.2 对象、Map
对象还是k: v: 的写法
friends:
lastName: zhangsan
age: 20
# 行内写法
friends: {lastName: zhangsan,age: 20}
2.3 数组(List、Set)
用 -(空格)值 来表示数组中的一个元素
pets:
- dog
- cat
# 行内写法
pets: [dog,cat]
3.值的获取
- 配置文件:
person:
name: taylor
age: 23
- javabean:
- 将配置文件中配置的每一个属性的值,映射到这个组件中
- @ConfigurationProperties: 告诉SpringBoot将本类中的所有属性和配置文件中相关配置进行绑定
- prefix = "person" : 配置文件中哪个下面的所有属性进行一一映射
- 只有这个组件是容器中的组件,才能使用容器的功能。@Component注解,将其交给容器管理
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
- 测试
可以自动注入
@SpringBootTest
class Springboot01HelloworldQuickApplicationTests {
@Autowired
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
2.properties
- 配置文件:
person.name=章三
person.age=22
- 获取值
两种从配置文件中获取值的方式,一种Spring表示式语言直接赋值
2.1 方式一:@ConfigurationProperties(prefix = "person")
自动注入
2.2 方式二:private String name;
在属性上注解@Value("${person.name}")
2.3 直接给属性赋值:private String name;
在属性上注解@Value("#{369}")
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个一个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
- 使用情况:
只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value
专门编写一个JavaBean来和配置文件进行映射,使用@ConfigurationProperties
- 配置文件占位符
3.1 随机数
3.2 占位符获取之前的配置
如果没有,可以用 : 来指定默认值
${random.value} ${random.int}
${person.name:taylor}
网友评论