【发布时间】:2023-03-23 18:02:01
【问题描述】:
如果 Spring bean 配置发生变化,有没有办法动态更新 Spring bean?
例如假设我有一个带有布尔属性x 的spring bean,并且当应用程序启动时spring bean 的值是true。
因此 spring 创建了将属性 x 设置为 true 的 bean。
有没有办法让如果我将属性更改为x(在应用程序运行时)该属性将被更新,例如到false?
【问题讨论】:
如果 Spring bean 配置发生变化,有没有办法动态更新 Spring bean?
例如假设我有一个带有布尔属性x 的spring bean,并且当应用程序启动时spring bean 的值是true。
因此 spring 创建了将属性 x 设置为 true 的 bean。
有没有办法让如果我将属性更改为x(在应用程序运行时)该属性将被更新,例如到false?
【问题讨论】:
调用 x setX() 方法的 setter 即可。
但它不应该是原型 bean。
【讨论】:
jrebel-spring 集成是可能的。它会监控您的配置并尝试在运行时重新连接您的 bean。
虽然我不会在生产中使用它...仅用于玩耍、测试等
【讨论】:
Spring 在启动时读取配置文件。如果您确实需要在应用程序运行时更新配置,您应该手动实现所有链:检测配置更改、验证配置、检测更改的 bean、更新上下文中的 bean。
【讨论】:
Spring bean 可以使用 applicationContext.xml 甚至以编程方式进行初始化。在你的情况下;您将需要从 xml 中删除配置并添加到 java 程序中。你可以从How to programmatically create bean definition with injected properties? 得到一些想法。其他好的链接也可以在 google 上找到。
【讨论】: