1 回答

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