mac下idea 設置spring.profiles.active自定義配置文件無效


在mac下可以通過設置VM options

在springboot項目中,通過idea在配置spring.profiles.active

 
配置圖-1

(1)在windows下點擊idea的啟動,可以通過System.getProperty("spring.profiles.active")獲取到dev值

(2)在mac下點擊idea的啟動,同樣的配置,但通過System.getProperty("spring.profiles.active")時獲取到的值是null;

對比:

(1)在windows啟動時,控制台輸出:

 
windows環境啟動控制台-1

參數設置被直接以-Dspring.profiles.active=dev追加到了 java命令之后,是以虛擬機參數進行設置

(2)在mac啟動時,控制台輸出:

 
mac環境啟動控制台-1

參數設置被直接以--spring.profiles.active=dev追加到了 啟動類命令之后

在命令運行時,連續兩個減號 --就是對application.properties中屬性值進行賦值的標志。

那么在mac下可以通過設置VM options來達到windows相同的效果

 
配置圖-2

這時,命令窗會出現:

 
mac環境啟動控制台-2

        但是這樣的話就會出現多個spring.profiles.active(-Dspring.profiles.active=dev和最末尾--spring.profiles.active=dev);那么兩個值最終取的是哪個呢? 按照springboot配置加載優先級來看,最終程序中使用優先級更高的--spring.profiles.active;

        需要注意:-Dspring.profiles.active=dev是將值設置到了虛擬機中,通過System.getProperty("spring.profiles.active")可以獲取到dev;但是使用--spring.profiles.active=dev使用System.getProperty("spring.profiles.active")是獲取不到的。

 

        Spring Boot 所提供的配置優先級順序比較復雜。按照優先級從高到低的順序,具體的列表如下:

1.命令行參數。

2.通過 System.getProperties() 獲取的 Java 系統參數。

3.操作系統環境變量。

4.從 java:comp/env 得到的 JNDI 屬性。

5.通過 RandomValuePropertySource 生成的“random.*”屬性。

6.應用 Jar 文件之外的屬性文件。(通過spring.config.location參數)

7.應用 Jar 文件內部的屬性文件。

8.在應用配置 Java 類(包含“@Configuration”注解的 Java 類)中通過“@PropertySource”注解聲明的屬性文件。

9.通過“SpringApplication.setDefaultProperties”聲明的默認屬性


免責聲明!

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



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