作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个作为 bean Autowiring 的字符串。 String
的值通过属性文件设置,并在运行时加载。这么多我可以验证。这是我的 XML:
<context:property-placeholder location="classpath:my-app.properties" />
<bean id="loadedProp" class="java.lang.String">
<constructor-arg>
<value>${loaded-prop}</value>
</constructor-arg>
</bean>
在我的应用程序中,我在 bean 中 Autowiring :
@Component
public class Foo {
@Autowired
private String loadedProp;
}
一切都很好。我有多个在这个 bean 中 Autowiring 的组件。我想要做的是,在应用程序运行时,将 bean 的值更新为其他值,以便在 bean Autowiring 的任何地方,它都使用最新的值。是否可以这样做,还是我每次想要更改值时都需要重新启动?
最佳答案
在阅读了其他一些答案和评论后,我找到了解决方案。我最终创建了一个简单的类:
public class LPropBean {
private String loadedProp;
public LPropBean(String loadedProp) {
this.loadedProp = loadedProp;
}
// getters and setters...
}
我更新了我的 XML 文件:
<bean id="lPropBean" class="LPropBean">
<constructor-arg>
<value>${loaded-prop}</value>
</constructor-arg>
</bean>
并更新了 bean 中 Autowiring 的所有 @Component
:
@Autowire
private LPropBean lPropBean;
// ... later ...
lPropBean.setLoadedProp(newProp);
// ... later ...
lPropBean.getLoadedProp();
我确信有一种更优雅的方式,但这正是我需要的方式。
关于java - 如何在 Spring 中更新 @Autowired String bean 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213897/
我是一名优秀的程序员,十分优秀!