1. 程式人生 > 實用技巧 >SpringBoot - 1 基本配置

SpringBoot - 1 基本配置

SpringBoot - 1 基本配置

06-SpringBoot配置-配置檔案分類

SpringBoot是基於約定的,所以很多配置都有預設值,但如果想使用自己的配置替換預設配置的話,就可以使用application.properties或者application.yml(application.yaml)進行配置。

  1. 預設配置檔名稱:application

  2. 在同一級目錄下優先順序為:properties>yml > yaml

例如:配置內建Tomcat的埠

properties:

server.port=8080

yml:

server: port: 8080

07-SpringBoot配置-yaml基本語法

  • 大小寫敏感
  • 資料值前邊必須有空格,作為分隔符
  • 使用縮排表示層級關係
  • 縮排時不允許使用Tab鍵,只允許使用空格(各個系統 Tab對應的 空格數目可能不同,導致層次混亂)。
  • 縮排的空格數目不重要,只要相同層級的元素左側對齊即可
  • ''#" 表示註釋,從這個字元一直到行尾,都會被解析器忽略。
server: 
	port: 8080  
    address: 127.0.0.1
name: abc

08-SpringBoot配置-yaml資料格式

物件(map):鍵值對的集合。

person:  
   name: zhangsan
# 行內寫法
person: {name: zhangsan}

陣列:一組按次序排列的值

address:
  - beijing
  - shanghai
# 行內寫法
address: [beijing,shanghai]

純量:單個的、不可再分的值

msg1: 'hello \n world'  # 單引忽略轉義字元
msg2: "hello \n world"  # 雙引識別轉義字元

引數引用

name: lisi 
person:
  name: ${name} # 引用上邊定義的name值

09-SpringBoot配置-獲取資料_1

@Value

   #獲取普通配置
   @Value("${name}")
    private String name;
    #獲取物件屬性
    @Value("${person.name}")
    private String name2;
   	#獲取陣列
    @Value("${address[0]}")
    private String address1;
  	#獲取純量
    @Value("${msg1}")
    private String msg1;

Evironment

@Autowired
 private Environment env;

System.out.println(env.getProperty("person.name"));

 System.out.println(env.getProperty("address[0]"));

10-SpringBoot配置-獲取資料_2

@ConfigurationProperties

注意:prefix一定要寫

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String name;
    private int age;
    private String[] address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String[] getAddress() {
        return address;
    }

    public void setAddress(String[] address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

11-SpringBoot配置-profile

  1. profile是用來完成不同環境下,配置動態切換功能的

  2. profile配置方式

    ​ 多profile檔案方式:提供多個配置檔案,每個代表一種環境。

    ​ application-dev.properties/yml 開發環境

    ​ application-test.properties/yml 測試環境

    ​ application-pro.properties/yml 生產環境

    ​ yml多文件方式:

​ 在yml中使用 --- 分隔不同配置

  1. profile啟用方式
  • 配置檔案: 再配置檔案中配置:spring.profiles.active=dev
  • 虛擬機器引數:在VM options 指定:-Dspring.profiles.active=dev
  • 命令列引數:java –jar xxx.jar --spring.profiles.active=dev

12-SpringBoot配置-專案內部配置檔案載入順序

載入順序為上文的排列順序,高優先順序配置的屬性會生效

  • file:./config/:當前專案下的/config目錄下
  • file:./ :當前專案的根目錄
  • classpath:/config/:classpath的/config目錄
  • classpath:/ :classpath的根目錄

13-SpringBoot配置-專案外部配置載入順序

外部配置檔案的使用是為了對能不檔案的配合

1.命令列

java -jar app.jar --name="Spring“--server.port=9000

2.指定配置檔案位置

 java -jar myproject.jar --spring.config.location=e://application.properties

3.外部不帶profile的properties檔案

    classpath:/config/application.properties
    classpath:/application.properties

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config