重新初始化 spring @Autowire bean

我有一个场景,我需要在启动期间根据应用程序配置初始化 bean。后来,由于基于事件获取的动态配置,我必须更新 bean。


此 bean 无法更新,只能用新实例替换。


使用new操作符是只初始化本地实例还是会改变 bean?


@Component

public class TestComp {


  @Autowired

  private BeanA beanA;


  public void updateBean() {

    beanA = new BeanA("new value");

  }


}

我在另一个类中引用了 bean 并在使用new. 它反映了新对象。但是,如果确实如此,我需要专家的确认。


蝴蝶不菲
浏览 242回答 2
2回答

侃侃无极

这听起来像你想有一个工厂,而不是。下面是它可能是什么样子的粗略概念;您的需求可能会有所不同。@Componentpublic class BeanFactory {    private volatile BeanA beanAInstance;    public BeanA createBeanA(String value) {        if (null == beanAInstance) {            synchronized (this) {                if (null == beanAInstance) {                    beanAInstance = new BeanA(value);                }            }        }        return beanAInstance;    }    public void refreshBeanA(String newValue) {        synchronized (this) {            beanAInstance = new BeanA(newValue);        }    }}然后将其连接起来,并根据配置,然后可以刷新并使用新值。请记住,这会改变您从此 bean 获得的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java