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