Spring Boot 是使用了“習(xí)慣優(yōu)于配置”(Spring Boot 會(huì)默認(rèn)給我們做一些全局配置)的理念屿衅,從而可以快速的讓我們的項(xiàng)目跑起來(lái),但當(dāng)我們想要自己對(duì)這些配置進(jìn)行修改時(shí)祖屏,我們就需要去修改 Spring Boot 的配置文件了application.properties
。
application.properties
文件放在src/main/resources
或類路徑的/config
目錄下蓖谢,如果創(chuàng)建的只是一個(gè)普通的 web 項(xiàng)目的話是沒(méi)有這個(gè)配置文件的根吁,需要我們自己去創(chuàng)建。
一 自定義屬性及使用
application.properties
使用鍵值對(duì)的形式來(lái)定義我們需要的屬性
HelloWorldControlle.java
使用注解@value(“${paramName}")
來(lái)注入屬性值
這種方式對(duì)于單個(gè)的屬性注入來(lái)說(shuō)會(huì)很方便端盆,但是如果是一個(gè) bean 怀骤,它有很多的屬性,那么我們就可以采取綁定的方式將鍵值對(duì)集合綁定到一個(gè) bean 上焕妙。
application.properties
com.name=acey
com.gender=male
user.java
@ConfigurationProperties(prefix = "com")
public class User {
private String name;
private String gender;
"setter / getter 省略"
其中 prefix
是我們?cè)?application.properties
中配置的鍵值對(duì)的前綴蒋伦,除了在我們需要綁定的 bean 上加注解之外,我們還需要在 Spring Boot 的啟動(dòng)入口類中加上注解 @EnableConfigurationProperties({User.class})
@Controller
@SpringBootApplication
@Configuration
@EnableConfigurationProperties({User.class})
public class HelloWorldApplication {
......
}
注:每個(gè)鍵對(duì)應(yīng)的值都可以是另外一個(gè)鍵焚鹊。比如
com.name=acey
com.gender=male
com.own=我是${com.name}痕届,我的性別是${com.gender}
Spring Boot 提供的隨機(jī)值配置,避免了我們?nèi)ビ么a去生成
com.secret=${random.value}
com.number=${random.int}
com.bignumber=${random.long}
com.uuid=${random.uuid}
com.number.less.than.ten=${random.int(10)}
com.number.in.range=${random.int[1024,2048]}
二 自定義配置文件
我們除了在 application.properties
中去配置末患,我們還可以自定義一些配置文件研叫,對(duì)于我們自定義的配置文件,我們也需要在 Spring Boot 的啟動(dòng)類中引入@PropertySource()
@Controller
@SpringBootApplication
@Configuration
@PropertySource("classpath:test.properties")
public class HelloWorldApplication {
...
}
三 多環(huán)境配置
在項(xiàng)目開(kāi)發(fā)中璧针,在不同的階段嚷炉,項(xiàng)目所需要的配置的文件是不同的,比如數(shù)據(jù)庫(kù)地址探橱,服務(wù)器端口等渤昌。一般情況下虽抄,對(duì)于多環(huán)境的配置,通過(guò)配置多份不同環(huán)境的配置文件独柑,再通過(guò)打包命令指定需要打包的內(nèi)容之后進(jìn)行區(qū)分打包迈窟,Spring Boot也不例外,或者說(shuō)更加簡(jiǎn)單忌栅。
在Spring Boot中多環(huán)境配置文件名需要滿足application-{profile}.properties的格式车酣,其中{profile}對(duì)應(yīng)你的環(huán)境標(biāo)識(shí),比如:
- application-dev.properties:開(kāi)發(fā)環(huán)境
- application-test.properties:測(cè)試環(huán)境
- application-prod.properties:生產(chǎn)環(huán)境
至于哪個(gè)具體的配置文件會(huì)被加載索绪,需要在application.properties
文件中通過(guò)spring.profiles.active
屬性來(lái)設(shè)置湖员,其值對(duì)應(yīng){profile}
值。
比如:spring.profiles.active=test
就會(huì)加載application-test.properties
配置文件內(nèi)容