1. 程式人生 > 其它 >5.預設配置檔案

5.預設配置檔案

通常情況下,Spring Boot 在啟動時會將 resources 目錄下的 application.properties 或 apllication.yml 作為其預設配置檔案,我們可以在該配置檔案中對專案進行配置,但這並不意味著 Spring Boot 專案中只能存在一個 application.properties 或 application.yml。

一、預設配置檔案

Spring Boot 專案中可以存在多個 application.properties 或 apllication.yml。

Spring Boot 啟動時會掃描以下 5 個位置的 application.properties 或 apllication.yml 檔案,並將它們作為 Spring boot 的預設配置檔案。

file:./config/
file:./config/*/
file:./
classpath:/config/
classpath:/

注:file: 指當前專案根目錄;classpath: 指當前專案的類路徑,即 resources 目錄。

以上所有位置的配置檔案都會被載入,且它們優先順序依次降低,序號越小優先順序越高。其次,位於相同位置的 application.properties 的優先順序高於 application.yml。

所有位置的檔案都會被載入,高優先順序配置會覆蓋低優先順序配置,形成互補配置,即:

  • 存在相同的配置內容時,高優先順序的內容會覆蓋低優先順序的內容;
  • 存在不同的配置內容時,高優先順序和低優先順序的配置內容取並集。

二、示例

建立一個名為 springbootdemo 的 Spring Boot 專案,並在當前專案根目錄下、類路徑下的 config 目錄下、以及類路徑下分別建立一個配置檔案 application.yml,該專案結構如下圖。

圖1:Spring Boot 專案配置檔案位置


專案根路徑下配置檔案 application.yml 配置如下。

#專案更目錄下
#上下文路徑為 /abc
server:
servlet:
context-path: /abc


專案類路徑下 config 目錄下配置檔案 application.yml 配置如下。

#類路徑下的 config 目錄下
#埠號為8084
#上下文路徑為 /helloWorld
server:
port: 8084
servlet:
context-path: /helloworld


專案類路徑下的 application.yml 配置如下。

#預設配置
server:
port: 8080

在 net.biancheng.www.controller 包下建立一個名為 MyController 的類,程式碼如下。

package net.biancheng.www.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class MyController {
@ResponseBody
@RequestMapping("/test")
public String hello() {
return "hello Spring Boot!";
}
}

啟動 Spring Boot,檢視控制檯輸出,如下圖。

圖2:Spring Boot 專案啟動控制檯輸出

根據 Spring Boot 預設配置檔案優先順序進行分析:

  • 該專案中存在多個預設配置檔案,其中根目錄下/config 目錄下的配置檔案優先順序最高,因此專案的上下文路徑為 “/abc”;
  • 類路徑(classpath)下 config 目錄下的配置檔案優先順序高於類路徑下的配置檔案,因此該專案的埠號為 “8084”;
  • 以上所有配置項形成互補,所以訪問路徑為“http://localhost:8084/abc”。


根據伺服器埠和上下文路徑,使用瀏覽器訪問http://localhost:8084/abc/test,結果如下圖。