Spring Boot 屬性配置
阿新 • • 發佈:2017-11-19
big 1.5 順序 路徑 ont 系統環境 方式 dom org
屬性的配置在項目中經常被使用到,Spring Boot 相對spring框架配置文件對屬性進行配置簡化了很多。
一:屬性配置優先級
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指定的默認屬性
(1.1)命令行參數
通過java -jar myApp.jar --name="Spring Boot" --server.port=8081
方式來傳遞參數。命令行參數在myApp.jar 後面設置。
(1.2)J2EE 上下文環境變量
(1.3)java系統變量
java -Dname="ws" -jar myApp.jar
,設置name屬性為ws
如果設置java -Dname="ws" -jar app.jar --name="Boot" 由於命令行參數優先級高,則name屬性為Boot
(1.4)操作系統環境變量
操作系統環境變量如安裝JAVA和MAVEN時配置的JAVA_HOME,MAVEN_HOME等,這些都是操作系統的環境變量。
(1.5)隨機值
# 隨機字符串
com.ws.blog.value=${random.value}
# 隨機int
com.ws.blog.number=${random.int}
# 隨機long
com.ws.blog.bignumber=${random.long}
# 10以內的隨機數
com.ws.blog.test1=${random.int(10)}
# 10-20的隨機數
com.ws.blog.test2=${random.int[10,20]}
(1.6)@PropertySource
這個註解可以指定具體的屬性配置文
二:application.properties文件加載順序
1. 當前路徑下的/config子目錄。
2. 當前路徑。
3. classpath路徑下的/config子路徑。
4. classpath路徑
三:配置屬性類
(3.1) 采用@Value("${XXX}")配置
1 @Configuration 2 public class MyConfig { 3 @Value("${ws.name}") 4 private String name; 5 @Value("${ws.age}") 6 private Integer age; 7 8 public String getName() { 9 return name; 10 } 11 12 public void setName(String name) { 13 this.name = name; 14 } 15 16 public Integer getAge() { 17 return age; 18 } 19 20 public void setAge(Integer age) { 21 this.age = age; 22 } 23 }
(3.2)采用@ConfigurationProperties 配置
首先在pom中添加如下依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
application.properties文件中添加如下配置
#My Config
ws.name=ws@ConfigurationProperties
ws.age=18
ws.listAddress[0]=add1
ws.listAddress[1]=add2
配置MyConfig類
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import java.util.List; @Configuration @ConfigurationProperties(prefix = "ws") public class MyConfig { private String name; private Integer age; private List<String> listAddress; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<String> getListAddress() { return listAddress; } public void setListAddress(List<String> listAddress) { this.listAddress = listAddress; } }
Spring Boot 屬性配置