2017-05-28 52 views
0

有一些屬性不從配置文件中讀取,而是從某些遠程資源獲取並且是不變的,例如數據庫中的用戶標識。它們在應用上下文中全局爲(這意味着每個應用上下文具有不同值的相同屬性)。全局應用程序上下文/環境運行時屬性

我期望像context.setPropertycontext.setGlobalPropertycontext.getEnvironment().setProperty,但我找不到這樣的方法。

我現在的解決方案是創建一個單例惰性bean,它在應用程序初始化期間初始化,然後可以自動裝入任何bean。但在我看來,這不是最好的方法。

+1

你不能在'Environment'上設置任何東西,你需要使用'ApplicationContextInitializer'來添加你自己的'PropertySource'。或者在調用'SpringApplication.run'之前獲取屬性,並在'SpringApplication'上使用構建器方法來設置默認屬性。 –

+0

@M。 Deinum問題是,爲了初始化一些屬性,我需要構建一些bean,例如特定的DAO。爲了構建DAO,我需要構建並運行應用上下文。現在我想我必須創建一些初始化全局屬性的父上下文(再次,全局上下文,而不是每個JVM),然後創建具有初始化環境變量的子上下文。這是個好主意嗎? – gumkins

回答

0

在運行期間更改環境不是一個好主意。 環境也是上下文中的bean,所以你的解決方案是可以的。 你也可以在動態變量中使用靜態容器並在運行時填充它

相關問題