在mac下可以通過設置VM options
在springboot項目中,通過idea在配置spring.profiles.active

(1)在windows下點擊idea的啟動,可以通過System.getProperty("spring.profiles.active")獲取到dev值
(2)在mac下點擊idea的啟動,同樣的配置,但通過System.getProperty("spring.profiles.active")時獲取到的值是null;
對比:
(1)在windows啟動時,控制台輸出:

參數設置被直接以-Dspring.profiles.active=dev追加到了 java命令之后,是以虛擬機參數進行設置
(2)在mac啟動時,控制台輸出:

參數設置被直接以--spring.profiles.active=dev追加到了 啟動類命令之后
在命令運行時,連續兩個減號 --就是對application.properties中屬性值進行賦值的標志。
那么在mac下可以通過設置VM options來達到windows相同的效果

這時,命令窗會出現:

但是這樣的話就會出現多個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”聲明的默認屬性