Spring Boot:項目啟動時讀取不同的配置文件


首先用 SpringBoot 寫一個 demo,其項目中 src 結構如下。

├─main
│  ├─java
│  │  └─com
│  │      └─company
│  │          └─demo
│  │              │  DemoApplication.java
│  │              │
│  │              └─controller
│  │                      IndexController.java
│  │
│  └─resources
│      │  application-dev.properties
│      │  application-pro.properties
│      │  application.properties
│      │
│      ├─static
│      └─templates
└─test

 IndexController.java 中的代碼是:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {

    @Value("${environment}")
    private String environment;

    @Value("${password}")
    private String password;

    @RequestMapping("/")
    public ResponseEntity<?> index() {
        return ResponseEntity.ok(environment + " " + password);
    }
}

 配置文件 application.properties 內容:

spring.profiles.active=dev

 配置文件 application-dev.properties 內容:

environment=develop
password=developPassword

 配置文件 application-pro.properties 內容:

environment=produce

 因為 application.properties 配置了讀取 profile 是 dev,所以項目啟動時會讀取 application-dev.properties 這個配置文件。

命令行輸入 java -jar demo.jar 啟動項目。

訪問 http://localhost:8080,可得到結果 develop developPassword

如何讀取外部的配置文件?首先新建一個 application-external.properties 文件,其內容是:

environment=external
password=externalPassword

將文件放在 d:/tmp/ 目錄下。

命令行輸入 java -jar demo.jar --spring.config.location=file:d:/tmp/application-external.properties 啟動項目。

可得到結果 external externalPassword,說明讀取到了外部配置文件。

更優的辦法:

或采用命令 java -jar demo.jar --spring.config.additional-location=file:d:/tmp/application-external.properties 這個可以將外部配置文件追加到項目中,而不是直接替換項目中的配置文件。

需要注意的是 spring.config.additional-location 只是擴展了讀取配置的目錄。

 

對於 dev pro 配置文件選擇的問題,有如下兩種方式,優先級由高到低:

第一種,命令行啟動時,java -jar -Dspring.profiles.active=pro demo.jar

第二種,在 application.properties 中添加信息 spring.profiles.active=dev

查找配置文件的優先級是:首先在 spring.profiles.active 中設置的文件,例如是 dev,那么優先在 application-dev.properties 中查找。只有當 application-dev.properties 中某些配置項沒有時才會去 application.properties 中查找。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM