Spring Boot的核心配置文件用于配置Spring Boot程序,名字必須以application開始.
1 .properties文件(默認采用該文件)
在002-springboot-springmvc項目基礎(chǔ)上,進行修改
項目名稱:003-springboot-port-context-path
通過修改application.properties配置文件,在修改默認tomcat端口號及項目上下文件根
鍵值對的properties屬性文件配置方式
#設(shè)置內(nèi)嵌Tomcat端口號
server.port=9090
#配置項目上下文根
server.servlet.context-path=/003-springboot-port-context-path
配置完畢之后,啟動瀏覽器測試
頁面顯示結(jié)果
2 .yml文件
項目名稱:005-springboot-yml,在004項目基礎(chǔ)之上
yml 是一種 yaml 格式的配置文件,主要采用一定的空格、換行等格式排版進行配置。
yaml 是一種直觀的能夠被計算機識別的的數(shù)據(jù)序列化格式,容易被人類閱讀,yaml 類似于 xml,但是語法比xml 簡潔很多,值與前面的冒號配置項必須要有一個空格, yml 后綴也可以使用 yaml 后綴
注意:當兩種格式配置文件同時存在,使用的是.properties配置文件,為了演示yml,可以先將其改名,重新運行Application,查看啟動的端口及上下文根。
我們以后在授課的過程中,使用properties,所以演示完yml效果后,將該配置文件改名
在實際開發(fā)的過程中,我們的項目會經(jīng)歷很多的階段(開發(fā)->測試->上線),每個階段的配置也會不同,例如:端口、上下文根、數(shù)據(jù)庫等,那么這個時候為了方便在不同的環(huán)境之間切換,SpringBoot提供了多環(huán)境配置,具體步驟如下:
項目名稱:006-springboot-multi-environment
1.為每個環(huán)境創(chuàng)建一個配置文件,命名必須以application-環(huán)境標識.properties|yml
application-dev.properties
#開發(fā)環(huán)境
#設(shè)置內(nèi)嵌Tomcat默認端口號
server.port=8080
#設(shè)置項目的上下文根
server.servlet.context-path=/006-springboot-multi-environment-dev
application-product.properties
#生產(chǎn)環(huán)境
#配置內(nèi)嵌Tomcat默認端口號
server.port=80
#配置項目上下文根
server.servlet.context-path=/006-springboot-multi-environment-product
application-test.properties
#測試環(huán)境
#配置內(nèi)嵌Tomcat端口號
server.port=8081
#配置項目的上下文根
server.servlet.context-path=/006-springboot-multi-environment-test
● 在總配置文件application.properties進行環(huán)境的激活
#SpringBoot的總配置文件
#激活開發(fā)環(huán)境
#spring.profiles.active=dev
#激活測試環(huán)境
#spring.profiles.active=test
#激活生產(chǎn)環(huán)境
spring.profiles.active=product
等號右邊的值和配置文件的環(huán)境標識名一致,可以更改總配置文件的配置,重新運行Application,查看啟動的端口及上下文根。
在SpringBoot的核心配置文件中,除了使用內(nèi)置的配置項之外,我們還可以在自定義配置,然后采用如下注解去讀取配置的屬性值。
1.@Value注解
項目名稱:007-springboot-custom-configuration
用于逐個讀取application.properties中的配置
案例演示
① 在核心配置文件applicatin.properties中,添加兩個自定義配置項school.name和school.website。在IDEA中可以看到這兩個屬性不能被SpringBoot識別,背景是桔色的。
② 在SpringBootController中定義屬性,并使用@Value注解或者自定義配置值,并對其方法進行測試
/**
* ClassName:SpringBootController
* Package:com.bjpowernode.springboot.web
* Description:
*/
@Controller
public class SpringBootController {
@Value("${school.name}")
private String schoolName;
@Value("${school.websit}")
private String schoolWebsit;
@RequestMapping(value = "/springBoot/say")
public @ResponseBody String say() {
return schoolName + "------" + schoolWebsit;
}
}
③ 重新運行Application,在瀏覽器中進行測試
2. @ConfigurationProperties
項目名稱:008-springboot-custom-configuration
將整個文件映射成一個對象,用于自定義配置項比較多的情況
案例演示
① 在com.bjpowernode.springboot.config包下創(chuàng)建ConfigInfo類,并為該類加上Component和ConfigurationProperties注解,prefix可以不指定,如果不指定,那么會去配置文件中尋找與該類的屬性名一致的配置,prefix的作用可以區(qū)分同名配置
/**
* ClassName:ConfigInfo
* Package:com.bjpowernode.springboot.config
* Description:
*/
@Component
@ConfigurationProperties(prefix = "school")
public class ConfigInfo {
private String name;
private String websit;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWebsit() {
return websit;
}
public void setWebsit(String websit) {
this.websit = websit;
}
}
② 在SpringBootController中注入ConfigInfo配置類
@Autowired
private ConfigInfo configInfo;
③ 修改SpringBootController類中的測試方法
@RequestMapping(value = "/springBoot/configInfo")
public @ResponseBody String say() {
return configInfo.getName() + "=======" + configInfo.getWebsit();
}
④ 重新運行Application,在瀏覽器中進行測試
3. 警告解決
① 在ConfigInfo類中使用了ConfigurationProperties注解后,IDEA會出現(xiàn)一個警告,不影響程序的執(zhí)行
② 點擊open documentnation跳轉(zhuǎn)到網(wǎng)頁,在網(wǎng)頁中提示需要加一個依賴,我們將這個依賴拷貝,粘貼到pom.xml文件中
!--解決使用@ConfigurationProperties注解出現(xiàn)警告問題-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4. 中文亂碼
如果在SpringBoot核心配置文件中有中文信息,會出現(xiàn)亂碼:
• 一般在配置文件中,不建議出現(xiàn)中文(注釋除外)
• 如果有,可以先轉(zhuǎn)化為ASCII碼
5. 友情提示
大家如果是從其它地方拷貝的配置文件,一定要將里面的空格刪干凈。