spring boot中配置檔案的載入位置以及優先順序
阿新 • • 發佈:2018-11-23
配置檔案載入位置
springboot 啟動會掃描以下位置的application.properties或者application.yml檔案作為Spring boot的預設配置檔案。
–file:./config/
–file:./
–classpath:/config/
–classpath:/
優先順序由高到底,高優先順序的配置會覆蓋低優先順序的配置;
SpringBoot會從這四個位置全部載入主配置檔案;互補配置;
下面我們進行測試看看是不是上面所說:
- 在
resource
目錄下建立application.properties
,在配置檔案中配置埠號
server.port=8081
- 在
resource
目錄下建立config目錄,在config目錄中建立application.properties
,在配置檔案中配置埠號server.port=8082
8082埠啟動 (對應classpath:/config/) - 我們直接在建立專案的目錄下建立一個
application.properties
,在配置檔案中配置埠號server.port=8083
8083埠啟動 (對應file:./) - 我們在專案目錄下建立一個config目錄,在config目錄中建立
application.properties
,在配置檔案中配置埠號server.port=8084
這裡測試的是優先順序問題,那什麼叫互補呢,其實也好理解,spring boot 會按照優先順序來掃描配置檔案,如果低優先順序配置了埠和訪問路徑,而高優先順序的配置檔案只配置埠那麼我們只會覆蓋埠,而訪問路徑是有效的,下面我們通過一個例子來說明。
- 在
resource
目錄下建立application.properties
(classpath:/路徑)
# 配置埠號 server.port=8081 #配置訪問路徑 #server.context-path=/spring server.servlet.context-path=/spring
- 在
resource
目錄下建立config目錄,在config目錄中建立application.properties
(classpath:/config/)
# 配置埠號
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盤中。