SpringBoot
配置文件,對於SpringBoot
的默認配置來講,若是默認配置不適用實際運用的場景狀況下,可使用配置文件覆蓋默認配置,好比內嵌的Tomcat
默認端口是8080
,就可使用配置文件將默認配置覆蓋。另外咱們在項目中,有可能封裝一些通用SDK,也可使用配置文件來處理。SpringBoot
支持的配置能夠查看官網文檔:application-propertiesjava
SpringBoot
提供了兩種配置文件類型:properties
和yml
(而yml
也能夠寫成yaml
)。默認配置文件名稱爲:application
,放在resources
目錄下。這兩種配置文件在同一級的優先級爲:properties
>yml
>yaml
spring
好比把默認端口改成8088
,上面訪問路徑爲http://localhost:8080/v1/index
,按照以前的習慣,一般是主機後面會跟項目名,也能夠經過配置文件配置。數組
使用yaml
方式配置:app
server: servlet: context-path: /spring-boot port: 8088
注意:
yaml
的配置方式:
號後面必須有空格。ide
簡單介紹下yaml
的基本語法:spring-boot
:
號後面),做爲分隔符Tab
鍵,只容許使用空格(由於各個系統Tab
對應的空格數目可能不一樣,致使層級混亂)#
表示註釋,從這個字符到行尾,都會被解析器忽略yaml
的數據格式:測試
person: name: lisi # 行內寫法 person: {name: lisi}
names: - zhangsan - lisi # 行內寫法 names: [zhangsan,lisi]
msg1: `hello \n world` #單引號忽略轉義字符 msg2: "hello \n world" #雙引識別轉義字符
yaml
參數引用:
有時候在配置一個參數,想被多個地方引用,能夠這樣配置:插件
name: zhangsan person: name: ${name} #引用上面定義的name的值
使用properties
配置:命令行
server.servlet.context-path=/spring-boot server.port=8088
注意:配置
context-path
必須是/
開頭日誌
啓動項目從日誌輸出:
Tomcat started on port(s): 8088 (http) with context path '/spring-boot'
這個時候咱們的訪問路徑就是:http://localhost:8088/spring-boot/v1/index
在實際開發時,有時候須要作一些初始化的自定義配置,那麼怎麼在代碼裏面獲取到配置文件的自定義配置,好比自定義配置name: zhangsan
。讀取配置內容有以下三種方式:
@Value
@Value("${name:lisi}") private String name; @GetMapping(path = "") public String index(){ return String.format("Hello %s Spring Boot!",name); }
訪問結果:Hello zhangsan Spring Boot!
,使用@Value
註解就能夠獲取配置文件的自定義配置,:
後面表示默認值,若是配置文件沒有配置,則取默認值。
@Autowired private Environment environment; System.out.println(String.format("使用Environment獲取配置name:%s",environment.getProperty("name")));
輸出結果:使用Environment獲取配置name:zhangsan
User
類@Component @ConfigurationProperties(prefix = "user") @Data public class User { private String name; private int age; private List<String> address; @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", address=" + address + '}'; } }
必須使用@Component
和@ConfigurationProperties
註解,@Data
是使用了lombok
插件。若是須要使用lombok
,須要在IDEA安裝Lombok
插件,引入lombok
依賴
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
配置文件以下配置:
user: name: zhangsan age: 12 address: - sichuang - hunan
在controller
中使用
@Autowired private User user; System.out.println(user.toString());
輸出結果:User{name='admin', age=12, address=[sichuan, hunan]}
在實際開發場景中,咱們通常有開發、測試、生產環境,每一個環節的某些配置會不同,那麼怎麼來解決不一樣環境配置的問題,下面詳細介紹使用Profile
多環境的切換。
profile
多環境配置方式:
profile
文件的方式,提供多個配置文件,每一個文件表明一種環境。
yml
多文檔方式:
---
分割不一樣配置profile
激活多環境方式:
spring.profiles.active=dev
IDEA
的VM options
指定:-Dspring.profiles.active=dev
java -jar xxx.jar --spring.profiles.active=dev
IDEA
下的Program arguments
指定:--spring.profiles.active=dev
多文件的方式這裏就不作操做了,上面介紹已經說明了,按照標準的文件格式命名就行,根據實際狀況選擇是用properties
仍是yml
的方式。下面介紹下yml
多文檔的方式:
# 開發環境 --- spring: config: activate: on-profile: dev server: port: 8081 # 測試環境 --- spring: config: activate: on-profile: test server: port: 8082 # 生產環境 --- spring: config: activate: on-profile: prod server: port: 8082 --- # 公用配置 server: servlet: context-path: /spring-boot
至於激活的方式,就參考上面的測試便可。