2017-05-28 70 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,所以你的解决方案是可以的。 你也可以在动态变量中使用静态容器并在运行时填充它

相关问题