配置檔案加載位置
springboot 啟動會掃描以下位置的application.properties或者application.yml檔案作為Spring boot的預設配置檔案。
–file:./config/
–file:./
–classpath:/config/
–classpath:/
優先級由高到底,高優先級的配置會覆寫低優先級的配置;
SpringBoot會從這四個位置全部加載主配置檔案;互補配置;
下面我們進行測試看看是不是上面所說:
- 在
目錄下建立resource
,在配置檔案中配置端口号application.properties
8081端口啟動 (對應classpath:/)server.port=8081
- 在
目錄下建立config目錄,在config目錄中建立resource
,在配置檔案中配置端口号application.properties
8082端口啟動 (對應classpath:/config/)server.port=8082
- 我們直接在建立項目的目錄下建立一個
,在配置檔案中配置端口号application.properties
8083端口啟動 (對應file:./)server.port=8083
- 我們在項目目錄下建立一個config目錄,在config目錄中建立
,在配置檔案中配置端口号application.properties
8084端口啟動 (對應file:./)server.port=8084
這裡測試的是優先級問題,那什麼叫互補呢,其實也好了解,spring boot 會按照優先級來掃描配置檔案,如果低優先級配置了端口和通路路徑,而高優先級的配置檔案隻配置端口那麼我們隻會覆寫端口,而通路路徑是有效的,下面我們通過一個例子來說明。
- 在
目錄下建立resource
(classpath:/路徑)application.properties
# 配置端口号
server.port=8081
#配置通路路徑
#server.context-path=/spring
server.servlet.context-path=/spring
- 在
目錄下建立config目錄,在config目錄中建立resource
(classpath:/config/)application.properties
# 配置端口号
server.port=8082
我們建立一個controller看看如何通路
@RestController
public class HelloController {
@RequestMapping(method = RequestMethod.GET,path = "/hello")
public String hello(){
return "hello";
}
}
啟動項目後我們看看這一句日志
Tomcat started on port(s): 8082 (http) with context path '/spring'
端口被覆寫,但是通路路徑要加/spring。這就是互補的意思。
我們還可以通過spring.config.location來改變預設的配置檔案位置
項目打包好以後,我們可以使用指令行參數的形式,啟動項目的時候來指定配置檔案的新位置;指定配置檔案和預設加載的這些配置檔案共同起作用形成互補配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties
我們要把配置檔案放在D盤中。