1. 程式人生 > >spring boot中配置檔案的載入位置以及優先順序

spring boot中配置檔案的載入位置以及優先順序

配置檔案載入位置

springboot 啟動會掃描以下位置的application.properties或者application.yml檔案作為Spring boot的預設配置檔案。

–file:./config/

–file:./

–classpath:/config/

–classpath:/

優先順序由高到底,高優先順序的配置會覆蓋低優先順序的配置;

SpringBoot會從這四個位置全部載入主配置檔案;互補配置

下面我們進行測試看看是不是上面所說:

  1. resource目錄下建立application.properties ,在配置檔案中配置埠號
    server.port=8081
    8081埠啟動 (對應classpath:/
  2. resource目錄下建立config目錄,在config目錄中建立application.properties ,在配置檔案中配置埠號server.port=8082 8082埠啟動 (對應classpath:/config/
  3. 我們直接在建立專案的目錄下建立一個application.properties,在配置檔案中配置埠號server.port=8083 8083埠啟動 (對應file:./
  4. 我們在專案目錄下建立一個config目錄,在config目錄中建立application.properties ,在配置檔案中配置埠號server.port=8084
    8084埠啟動 (對應file:./

這裡測試的是優先順序問題,那什麼叫互補呢,其實也好理解,spring boot 會按照優先順序來掃描配置檔案,如果低優先順序配置了埠和訪問路徑,而高優先順序的配置檔案只配置埠那麼我們只會覆蓋埠,而訪問路徑是有效的,下面我們通過一個例子來說明。

  1. resource目錄下建立application.propertiesclasspath:/路徑
# 配置埠號
server.port=8081

#配置訪問路徑
#server.context-path=/spring
server.servlet.context-path=/spring
  1. 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盤中。