Spring Boot application配置文件yaml properties

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 配置文件删除,重新创建就行了

发布了47 篇原创文章 · 获赞 7 · 访问量 2356

猜你喜欢

转载自blog.csdn.net/qq_43616898/article/details/103971469