gpt4 book ai didi

java - 如何在 Spring 中更新 @Autowired String bean 的值?

转载 作者:IT老高 更新时间:2023-10-28 13:50:35 25 4
gpt4 key购买 nike

我有一个作为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com