我如何在设置新配置后更新所有的Spring对象?

IT小君   2023-10-24T23:39:34

如何在动态配置更改后刷新之前的 @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 对象?

评论(1)
IT小君

你可以使用AbstractRefreshableApplicationContext来实现这一点。它提供了在运行时重新加载bean配置的方法。

如果你正在使用Spring Boot,那么你可以使用@RefreshScope注解与Spring Actuator。Spring Actuator端点/refresh重新加载使用@RefreshScope注解的bean。

2023-10-24T23:39:48   回复