4 回答

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

TA貢獻2019條經驗 獲得超9個贊
經典的解決方案是設置一個配置文件(我更喜歡屬性,因為我是理智的),并允許在每個已安裝的主機上放置一個覆蓋文件。
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貢獻1825條經驗 獲得超6個贊
在資源文件夾中
請製作 application.yml、application-local.yml、application-dev.yml 等的檔案。你想要什么
然后在應用程序中.yml
spring.profile.active = ${ENV}
現在,在運行期間,在 Intellij 下指定運行/調試配置中的 ENV 變量,或者提及要在 application.yml 中為其構建 jar 的配置文件。
或者,您可以使用 -D spring.profile.active=dev

TA貢獻1847條經驗 獲得超11個贊
首先,從文檔中可以看出:
SpringApplication 從 application.properties 文件中加載以下位置的屬性,并將它們添加到 Spring 環境中:
當前目錄的 /config 子目錄
當前目錄
類路徑 /配置包
類路徑根
因此,使用傳遞的目錄層次結構,您將遇到問題。
對于文件規范,您可以使用配置文件。其工作原理如下:
如果沒有指定的配置文件 - 將使用
application.properties
對于任何其他配置文件也將使用具有名稱的配置文件
application-<name>.properties
因此,如果您指定和配置文件,則屬性 ,'application-cool.properties, 將處于使用狀態dev
cool
application.properties
application-dev.properties
更新:
您可以傳遞屬性文件路徑指定,但是如果您想要目錄層次結構,則需要使用 和 ApplicationContextInitializer 進行一些自定義spring.config.location
context.initializers.classes
添加回答
舉報