背景
項目跑起來,和以前相比,現在的配置文件能幹什麼?SpringBoot 項目的配置文件就是創建項目時,自帶的 application.properties ,打開裏面空空如也。這個文件裏面的語法是基於 YAML 語言的,與原來的 Properties 比,結構一目瞭然。所以直接把配置文件名改爲 application.yml 。
環境
後續如果沒有新增其他軟件的話,就是和第一節保持一致。
問題
1、以前的Spring下的自定義環境變量現在應該放哪裏?
2、項目啓動時端口號在哪裏指定?
3、多環境配置文件如何啓用?
答案
1、自定義環境變量現在都可以定義在 application.yml 中,該怎麼寫呢 ?
就是基於 YAML 語法填寫:
k:(空格) v:表示一對鍵值對(空格必須有);
以空格的縮進來控制層級關係;只要是左對齊的一列數據,都是同一個層級的,屬性和值也是大小寫敏感;如下所示:
user1: name: Lili age: 18 user2: name: Lucy age: 22如果需要讀取配置文件的屬性值只需要加 @Value("${屬性名}”),如下圖:
package com.mm.work.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorld { @Value("${user2.name}") private String name; @Value("${user2.age}") private int age; @RequestMapping("/") public String test(){ return "Hello World!"; } @RequestMapping("/conf") public String conf(){ return "配置文件取值:" + name + "|" + age; } }啓動項目,訪問項目IP端口:http://localhost:8080/conf
將自定義的屬性值賦值給Bean文件,比如我們單獨配置了一個文件 custmos.properties。
com.mm.name=test com.mm.addr=wuhan將這個信息賦值到Bean上,pom需要引用SpringBoot解析的一個包, 新建一個bean文件來對應文件裏的屬性
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>bean文件加上文件引用註解:
@Configuration @PropertySource(value = "classpath:custmos.properties") @ConfigurationProperties(prefix = "com.mm") public class User { private String name; private int age; 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; } }
2、修改項目啓動的端口號,還是在 application.yml 中
server: port: 8082
3、多環境配置文件啓用
在現實的開發環境中,我們需要不同的配置環境;格式爲application-{profile}.properties,其中{profile}對應你的環境標識,比如:
application-test.properties:測試環境
application-dev.properties:開發環境
application-uat.properties:生產環境
怎麼使用?只需要我們在application.yml中加:spring: profiles: active: test/dev/uatactive 配置的是哪個名字就會自動加載相應的配置文件。