1 回答
TA貢獻1772條經驗 獲得超8個贊
似乎 Spring 默認會在初始化時加載一些屬性,除非您專門編寫邏輯來覆蓋它們(就像我在 中寫的那樣MainClass.java),否則沒有選項可以覆蓋這些屬性。其中一些包括(logging.file,@ConditionalonExpression 中使用的鍵)。
一些有自己挑戰的技巧:
在類路徑中指定屬性
application.properties。在早期階段加載的變量總是從此文件中讀取。挑戰:我已將所有屬性緊密耦合到 jar 中,為了更改值,我必須重新編譯并重新啟動 Jar。使用配置文件并定義
application.properties為application-profile.properties. 挑戰:我必須創建這么多配置文件,但之前的挑戰仍然存在。將屬性值作為 JVM 參數傳遞為
-Dproperty.key=value. 挑戰:認真嗎?我應該發送多少屬性作為 JVM 參數?實現
ApplicationContextInitialize和覆蓋initialize方法。挑戰:不建議覆蓋 Spring 的默認行為,并且僅將其用于讀取屬性文件是不是有點矯枉過正?
解決方案:
用于-Dspring.config.location指定屬性文件。在這種情況下,spring 總是只從指定的位置讀取屬性。您也可以提供多個屬性文件。有關更多詳細信息,請參閱此內容。如果您在目錄彈簧以相反的順序加載它們時給出屬性位置,似乎。但是,如果您指定文件,它將遵循指定的順序。
注意:所有這些都可以組合在一起。要了解優先級,請參閱此。
添加回答
舉報
