4 回答

TA貢獻1890條經驗 獲得超9個贊
在資源文件夾中
制作 application.yml、application-local.yml、application-dev.yml 等文件。你想要什么
然后在 application.yml
spring.profile.active = ${ENV}
現在在運行期間從 Intellij 下的運行/調試配置中指定 ENV 變量,或者在 application.yml 中提及您要為其構建 jar 的配置文件。
或者,您可以使用 -D spring.profile.active=dev

TA貢獻1809條經驗 獲得超8個贊
經典的解決方案是設置一個配置文件(我更喜歡屬性,因為我很理智)并允許在每個已安裝的主機上放置一個覆蓋文件。
Spring 開箱即用地支持這一點。
這是一個例子:
public static void main(final String[] argumentArray)
{
final StringApplicationBuilder springApplicationBuilder;
springApplicationBuilder = new SpringApplicationBuilder(YourSpringBootApplication.class)
springApplicationBuilder.properties(
"spring.config.location=classpath:/yourConfig.properties,/some/path/to/overrides/directory/yourConfig.properties");
springApplicationBuilder.build().run(argumentArray);
}

TA貢獻1866條經驗 獲得超5個贊
首先,來自文檔:
SpringApplication 從以下位置的 application.properties 文件中加載屬性并將它們添加到 Spring 環境中:
當前目錄的 /config 子目錄
當前目錄
一個類路徑 /config 包
類路徑根
因此,通過傳遞目錄層次結構,您會遇到問題。
其次,對于文件規范,您可以使用Profiles。這工作如下:
如果沒有指定的配置文件 -
application.properties
將被使用對于任何其他配置文件,也將使用帶有名稱的配置文件
application-<name>.properties
因此,如果您指定dev
和cool
配置文件,屬性application.properties
,,,application-dev.properties
`application-cool.properties,將被使用
更新:
您可以傳遞spring.config.location
屬性文件路徑指定,但如果您想要目錄層次結構 - 您需要使用ApplicationContextInitializercontext.initializers.classes
進行一些自定義

TA貢獻1842條經驗 獲得超13個贊
在我的項目中,我使用 VM 選項指定了一個配置文件:-Dspring.profiles.active=local
然后我有一個名為 application-local.yml 的文件
在生產中: -Dspring.profiles.active=prod ,將使用文件 application-prod.yml
添加回答
舉報