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

标签 java spring autowired

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

相关文章:

java - Spring @Bean autowire() - 第二次失败(?)

java - 如何解决 NaN 错误

JAVA SPLIT - 分割而不删除空格

java - android sdk设置imageview x y坐标

java - Spring Boot React 在单独的包中

java - 如何在@Query注释中使用方法参数作为纯文本

java - 将子目录添加到 IntelliJ Spring Boot 元素中的静态目录会重命名它?

java - 从应用程序上下文中获取 bean 类型列表

java - @Autowired 如何工作,如果 @Autowired 设置在仅使用 setter/constructor 声明但未初始化的属性(类)上

java - spring mvc Autowiring sessionFactory 给出 null 对象