1. 程式人生 > >SpringBoot配置之yaml檔案

SpringBoot配置之yaml檔案

一、兩種配置檔案

SpringBoot預設有兩種全域性配置檔案:application.properties和application.yml,配置檔名是固定的

配置檔案的作用:修改SpringBoot自動配置的預設值,SpringBoot應用之所以能夠直接訪問,是因為SpringBoot在底層有很多預設配置,我們可以通過全域性配置檔案來更改這些預設配置

YAML:以資料為中心,比JSON、XML更適合做配置檔案,字尾名可以是.yml或.yaml,示例:

    server:
      port: 8082

二、YAML的語法

1、基本語法

①k:(空格)v——k是鍵,v是值,注意冒號後面有個空格

②以空格的縮排控制層級關係——左對齊的一列資料的層級是一樣的

    server:
      port: 8081
      error:
        path: /
      address: /hello

③屬性和值都是大小寫敏感的

2、值的寫法

①字面量:數字、字串、布林

k: v(字串預設不用加單引號或雙引號,但是加單引號和加雙引號會有一點不同——雙引號裡面的特殊字元會被轉義,單引號則不會)

    name: '張三 \n 李四' #"張三 \n 李四"
    name: "張三 \n 李四" #"張三 換行 李四"
    age: 20

②物件(或Map):注意空格控制層級和所屬關係

    friend:
      name: 張三
      age: 20

或者

friend: {name: 張三,age: 20}

③陣列(或list、set):用短橫線- 值表示第n個元素

    pets:
     - cat
     - dog
     - pig

或者

pets: [cat,dog,pig]

3、配置檔案值注入

巢狀寫法:

    person:
      name: 張三
      age: 20
      married: false
      birth: 2017/12/02
      phones: {home: 05308790673,componay: 1558909876} #map
      friends: #list
       - 李四
       - 王五
      dog: #obj
       name: 旺財
       age: 2

JavaBean:

    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
        private String name;
        private Integer age;
        private Boolean married;
        private Date birth;
        private Map<String,String> phones;
        private List<String> friends;
        private Dog dog;
     
        //...getter setter
     
    }

注意:

    a、能夠注入值的bean必須是Spring管理的bean,即只能給加了@Component等註解的bean注入值

    b、欲通過配置檔案給bean注入值必須給該bean加@ConfigurationProperties註解,告訴SpringBoot該bean的所有屬性的值均可以從配置檔案中注入,該註解的屬性prefix是指定用配置檔案中的哪個鍵為該bean注入屬性值

另外,可以匯入一個配置檔案處理器,這樣我們在配置檔案中寫屬性時就會有提示了

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

在匯入了配置檔案處理器後屬性名的駝峰式寫法中的大寫字母在提示的時候會變成-小寫字母:等效於駝峰時寫法

last-name

此處的last-name也可以寫為lastName

4、SpringBoot為我們提供的單元測試:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootHelloquickApplicationTests {
     
        @Autowired
        private Person person;
     
        @Test
        public void contextLoads() {
            System.out.print(person);
        }
     
    }

使用的SpringRunner的方式而非Junit,這樣就可以在測試類中注入值了
---------------------
作者:如不來
來源:CSDN
原文:https://blog.csdn.net/rubulai/article/details/81139699
版權宣告:本文為博主原創文章,轉載請附上博文連結!