# application.properties
系統默認的配置文件名稱是`application.properties`,內容樣式如下:
~~~
server.port=8080
spring.profiles=dev
spring.thymeleaf.cache=false
~~~
也可以使用` application.yml`
## 使用多環境配置
在Spring Boot中多環境配置文件名需要滿足application-{profile}.properties的格式,其中{profile}對應你的環境標識,如:
~~~
application-dev.properties:開發環境
application-pro.properties:生產環境
~~~
這樣就可以使用多狀態配置。在使用時,需要在配置文件application.properties中標記激活配置`spring.profiles.active=dec`
命令行 執行java -jar xxx.jar --spring.profiles.active=dev,就可以使用application-dev.properties中的配置。
比如在Test中,加入:@ActiveProfiles("dev")即可使用dev的配置。加入:@ActiveProfiles("home")即可使用home的配置。
# 使用yml多環境配置
配置文件也可以寫成application.yml,格式更簡潔。
如開發環境和生產環境分開配置,可以使用符號`---`,如:
~~~
spring:
profiles:
#激活開發環境
active: dev
---
#開發環境配置
spring:
profiles: dev
server:
port: 8080
---
#生產環境配置
spring:
profiles: pro
server:
port: 8082
~~~
注意,參數值和:之間要有空格
## 調用屬性值:@Value 注解注入屬性
在類中使用配置里的值,可以使用@Value注解:
```
@value("${age}")
private Integer age;
```
## @ConfigurationProperties
在類前注釋 @ConfigurationProperties 可以直接為類的屬性賦值為配置參數,
‘prefix’是配置前綴
首先增加配置參數文件user.yml:
```
profile:
age: 20
sex: 1
nickname: jack
```
使用配置屬性:
```
@Component
@ConfigurationProperties(prefix = "user")
@PropertySource("classpath:profile.yml")
public class UserConfiguration {
private String sex;
private String nickname;
...
}
```
@PropertySource 指定配置文件路徑
## 通過命令行設置屬性值
命令:java -jar xxx.jar --server.port=8888,通過使用--server.port屬性來設置xxx.jar應用的端口為8888。
在命令行運行時,連續的兩個減號--就是對application.properties中的屬性值進行賦值的標識。所以,java -jar xxx.jar --server.port=8888命令,等價于我們在application.properties中添加屬性server.port=8888,該設置在樣例工程中可見,讀者可通過刪除該值或使用命令行來設置該值來驗證。
安全起見,Spring Boot提供了屏蔽命令行訪問屬性的設置,只需要這句設置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)。
## 配置優先級
優先級如下:
1. 命令行參數
2. 來自java:comp/env的JNDI屬性
3. Java系統屬性(System.getProperties())
4. 操作系統環境變量
5. RandomValuePropertySource配置的random.*屬性值
6. jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
7. jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
8. jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
9. jar包內部的application.properties或application.yml(不帶spring.profile)配置文件
10. @Configuration注解類上的@PropertySource
11. 通過SpringApplication.setDefaultProperties指定的默認屬性