Srping boot 配置文件詳解
Spring Boot 自動(dòng)化配置
Spring Boot 提供了對(duì)應(yīng)用進(jìn)行自動(dòng)化配置摇锋。相比以前 XML 配置方式来吩,很多顯式方式申明是不需要的诡挂。Spring boot 開發(fā)起來驯杜,使我們就簡(jiǎn)化了很多步驟和不必要的代碼材原。
自定義屬性與加載
- 使用application.properties
- 使用application.yml
<font color=#ff0000 size=4 face="黑體">使用application.properties方式</font>
person.name=測(cè)試環(huán)境
person.age=22
person.desc=我叫 ${person.name},今年${person.age}
person.user.name=開發(fā)
person.user.age=22
person.user.desc=我叫 ${person.name}磷醋,今年${person.age}
server.port=8080
<font color=#ff0000 size=4 face="黑體">使用application.yml</font>
person:
name: 生產(chǎn)環(huán)境
age: 22
desc: 我叫 ${person.name},生產(chǎn)了${person.age}
user:
name: 開發(fā)
age: 22
desc: 我叫 ${person.name}胡诗,生產(chǎn)了${person.age}
server:
port: 80
獲取屬性的方法也有2個(gè)種
方法一:直接獲取,利用@Value,直接寫出屬性的名字邓线,來獲取屬性的值
@Setter
@Getter
@Component
public class Person {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@Value("${person.desc}")
private String desc;
}
方法二:使用前綴獲取,利用@ConfigurationProperties注解配置前綴煌恢。然后屬性名對(duì)應(yīng)一樣即可(這個(gè)更方便骇陈,建議用這種)
@Setter
@Getter
@Component
@ConfigurationProperties(prefix = "person.user")
public class User {
private String name;
private Integer age;
private String desc;
}
寫一個(gè)Controller 來測(cè)試效果
@RestController
public class Hello {
@Autowired
private User user;
@Autowired
private Person person;
@GetMapping(value = "user")
public String user(){
return user.getDesc();
}
@GetMapping(value = "person")
public String person(){
return person.getDesc();
}
}
環(huán)境切換
在實(shí)際的開發(fā)中,因?yàn)閿?shù)據(jù)庫配置瑰抵、Redis 配置你雌、注冊(cè)中心和日志配置等的配置不同,所以我們有時(shí)候需要多種配置環(huán)境二汛。例如婿崭,測(cè)試環(huán)境配置拨拓、開發(fā)環(huán)境配置、生產(chǎn)環(huán)境配置等氓栈。
- application-dev.properties:開發(fā)環(huán)境
- application-test.properties:測(cè)試環(huán)境
- application-prod.properties:生產(chǎn)環(huán)境
在Spring Boot中多環(huán)境配置文件名需要滿足application-{profile}.properties的格式渣磷,其中{profile}對(duì)應(yīng)你的環(huán)境標(biāo)識(shí),至于哪個(gè)具體的配置文件會(huì)被加載授瘦,需要在application.properties文件中通過spring.profiles.active屬性來設(shè)置醋界,其值對(duì)應(yīng){profile}值。
如:spring.profiles.active=test就會(huì)加載application-test.properties配置文件內(nèi)容
注意點(diǎn):application.properties 配置中文值的時(shí)候奥务,讀取出來的屬性值會(huì)出現(xiàn)亂碼問題物独。
application.yml則不會(huì)出現(xiàn)亂碼問題
參考文章:
http://blog.didispace.com/springbootproperties/
http://www.bysocket.com/?p=1786