Pat*_*Pat 10 java spring autowired
我有一个String,我将自动装配为bean.该值的值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>
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我在bean中自动装配:
@Component
public class Foo {
@Autowired
private String loadedProp;
}
Run Code Online (Sandbox Code Playgroud)
一切都很好看.我有多个组件在这个bean中自动装配.我正在尝试做的是,在应用程序运行时,将bean的值更新为其他内容,以便在bean自动装配的任何地方,它使用最新的值.是否可以这样做,或者我只是需要在每次想要更改值时重新启动?
在阅读了其他一些答案和评论后,我找到了解决方案。我最终创建了一个简单的类:
public class LPropBean {
private String loadedProp;
public LPropBean(String loadedProp) {
this.loadedProp = loadedProp;
}
// getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
我更新了我的 XML 文件:
<bean id="lPropBean" class="LPropBean">
<constructor-arg>
<value>${loaded-prop}</value>
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
并更新@Component了 bean 中自动装配的所有s:
@Autowire
private LPropBean lPropBean;
// ... later ...
lPropBean.setLoadedProp(newProp);
// ... later ...
lPropBean.getLoadedProp();
Run Code Online (Sandbox Code Playgroud)
我确信有一种更优雅的方式,但这正是我需要的方式。
| 归档时间: |
|
| 查看次数: |
8872 次 |
| 最近记录: |