+-

假设我们在 Spring中有这样一个组件:
@Component
public class MyComponent {
@Value("${someProperty}")
private String text;
}
如果我们定义属性占位符:
<context:property-placeholder location="classpath:myProps.properties"/>
并且myPropos.properties包含someProperty的值,该值将在初始化上下文时注入到文本字段中.这非常简单容易.
但是,假设我有一项服务,使用户可以更改someProperty的值:
public void changeProp(String name, String newValue);
有没有机会我可以将newValue重新注入到文本字段.我的意思是应该很简单.基本上,与初始化后注入没有什么不同.我无法想象Spring没有对此的支持?我可以开一些活动吗?
我基本上可以自己做,但是我想知道是否已经有东西了?如果不是,没有人知道一开始实际上是在处理什么注入的Spring类吗?如果不存在解决方案,我可能会重用那里的代码,由我自己执行.
最佳答案
我希望spring没有对此的支持,因为正常的注入是在创建bean时完成的,但不会投入使用.
无论如何:在this blog entry “Reloadable Application Properties with Spring 3.1, Java 7 and Google Guava”中,您可以找到解决方案的主意.
关键思想是使用后处理器来构建具有属性字段的所有字段的列表.如果属性已更改,则可以使用此列表来更新字段.
点击查看更多相关文章
转载注明原文:spring-在运行时中用@Value注释的更新字段 - 乐贴网