Spring Boot 配置文件 yaml properties
Spring Boot 支持两种
全局
配置文件(application.properties
,application.yml
),但是只使用一种,配置文件名是固定的application
作用:
修改SpringBoo自动配置文件默认值(SpringBoot 底层就已经配置完成)
1.YAML
YAML:
YAML Ain’t Markup Language YAML不是一种标记语言
Yet Another Markup Lanuage 仍是一种标记语言
强调以数据为中心
,而不是以标记语言为重点
写法
key:(空格)value 冒号后必须要有空格
注: yaml 大小写敏感
# 对象
person:
name: lisi #字符串直接书写
age: 18
person: {name: lisi, age: 18} #行内写法
# 数组
list: [1,2,3,4,5]
list:
- 1
- 2
- 3
# map
map: {k1: v1, k2: v2}
map:
k1: v1
k2: v2
#字符串
str1: "双引号会转义\n哈哈"
str2: '单引号不转义\n引号内的数据原封不动的输出'
#out: str1 双引号会转义
# 哈哈
# str1 单引号不转义\n引号内的数据原封不动的输出
2.application.yml 配置文件注入
包结构
Persion 要有set方法
/**
* @Component(能被@ComponentScan 扫描到)
* 只有这个类是容器中的组件 才能使用ConfigurationProperties功能
*
* @ConfigurationProperties:
* 告诉SpringBoot 将本类中的属性与配置文件中相关配置进行绑定
* 会将配置文件中每一个属性的值set进组件
* prefix:前缀,要与配置文件中要绑定的属性一致
* eg: prefix="person" 与person进行绑定
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private String firstName;
private String name;
private Integer age;
private Boolean boy;
private Date birth;
private String str1;
private String str2;
private List<Object> list;
private Map<String,Object> map;
private Pet pet;
PersonTest
@RunWith(SpringRunner.class)
@SpringBootTest
public class PersonTest {
@Autowired
private Person person;
@Test
public void test_01(){
System.out.println(person);
}
}
application.yml
person:
last-name: 张 #等同于 lastName
first-Name: 三 #等同于 firstName
name: 张三
age: 18
boy: false
birth: 2020/01/14
# list: [1,2,3,4,5]
list:
- q
- 1
- 3
- r
map: {k1: v1, k2: v2}
# map:
# k1: v1
# k2: v2
pet:
name: dog
age: 12
# 双引号:可以进行转义 双引号 换行
#哈哈哈
# 单引号:会将引号内的字符串原封不动的输出
str1: "双引号\n\n哈哈哈"
str2: '单引号\nhahha'
out:
Person{lastName=‘张’, firstName=‘三’, name=‘张三’, age=18, boy=false, birth=Tue Jan 14 00:00:00 CST 2020, str1='双引号
哈哈哈’, str2=‘单引号\nhahha’, list=[q, 1, 3, r], map={k1=v1, k2=v2}, pet=Pet{name=‘dog’, age=12}}
application.properties
person.last-name=张
person.first-name=三
person.name=张三
person.age=18
person.birth=2000/01/12
person.boy=false
person.list=1,2,3,a,b,c
person.map.k1=v1
person.map.k2=2
person.pet.name=dog
person.pet.age=11
person.str1="双引号\nsdfsdf"
person.str2='单引号\nsdfdsf
out:
Person{lastName=‘å¼ ‘, firstName=‘三’, name=‘å¼ ä¸‰’, age=18, boy=false, birth=Wed Jan 12 00:00:00 CST 2000, str1=’“åŒå¼•å·
sdfsdf”’, str2=’‘å•å¼•å·
sdfdsf’’, list=[1, 2, 3, a, b, c], map={k2=2, k1=v1}, pet=Pet{name=‘dog’, age=11}}
出现乱码: properties文件编码为ascii idea中properties 默认编码为gbk
out:
Person{lastName=‘张’, firstName=‘三’, name=‘张三’, age=18, boy=false, birth=Wed Jan 12 00:00:00 CST 2000, str1=’“双引号
sdfsdf”’, str2=’‘单引号
sdfdsf’’, list=[1, 2, 3, a, b, c], map={k2=2, k1=v1}, pet=Pet{name=‘dog’, age=11}}
如果还是乱码
把之前的properties 配置文件删除
,重新创建
就行了