如何更改属性文件并在运行时刷新配置类?

时间:2018-08-23 08:00:03

标签: java spring spring-mvc

我在properties上有classpath个文件,在configuration class中有java个文件,它们映射了该属性文件。当我更改属性文件时,我也想刷新configuration class以获取新值,并且我想不重新启动server而做,有什么解决方案吗?我正在使用spring mvc

1 个答案:

答案 0 :(得分:3)

您应该使用@RefreshScope

文档:

  

标记为@RefreshScope的Spring @Bean将变得特殊   配置发生变化时的处理。这解决了   仅注入其配置的有状态bean问题   当它们初始化时。例如,如果数据源已打开   当通过环境更改数据库URL时,   可能希望这些连接的持有人能够完成   他们在做什么。然后下次有人借用连接   从池中,他得到了一个带有新URL的文件。

     

RefreshScope在上下文中是一个bean,并且具有公共方法   refreshAll()通过清除目标来刷新作用域中的所有bean   缓存。还有一个refresh(String)方法刷新个人   豆的名字。此功能在/ refresh端点中公开   (通过HTTP或JMX)。

并像这样使用:

@Configuration
@PropertySource("classpath:configprops.properties")
@RefreshScope
public class ConfigProperties {
    // previous code
}