如何在动态配置更改后刷新之前的 @Autowired
的 spring 对象?
// 这是我的 updateConfig 方法
GenericApplicationContext context = new GenericApplicationContext();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(context);
reader.loadBeanDefinitions(new ClassPathResource("applicationContext.xml"));
context.refresh();
myApplicationContextAware.setApplicationContext(context);
通过 myApplicationContextAware.applicationContext.getBean(MyClass.class)
我可以使用新的配置获取新实例,但是所有 @Autowired
的对象仍然包含旧值
是否有任何解决方案来刷新 spring 对象?
你可以使用AbstractRefreshableApplicationContext来实现这一点。它提供了在运行时重新加载bean配置的方法。
如果你正在使用Spring Boot,那么你可以使用@RefreshScope注解与Spring Actuator。Spring Actuator端点
/refresh
重新加载使用@RefreshScope注解的bean。