我有一个弹簧启动应用程序。我正在使用 Spring Cloud Config 来外部化属性 - 通过 Git。一切正常。我希望在发出执行器刷新端点时刷新 bean。通过执行以下操作,Bean 会按预期快速刷新:
@EventListener
public void onRefreshScopeRefreshed(final RefreshScopeRefreshedEvent event) {
logger.info("Received Refresh event. Refreshing all beans...");
for (String beanName : applicationContext.getBeanDefinitionNames()) {
Class<?> beanClass = applicationContext.getBean(beanName).getClass();
if(beanClass.getName().contains("SpringCGLIB")) {
logger.info("Proxied bean: bean name: " + beanName + " - Bean class: " + applicationContext.getBean(beanName).getClass());
} else {
logger.info("Regular Bean: Bean name: " + beanName + " - Bean class: " + applicationContext.getBean(beanName).getClass());
}
applicationContext.getBean(beanName).getClass(); // to cause refresh eagerly
}
}
Run Code Online (Sandbox Code Playgroud)
唯一没有按预期工作的事情是,当我使用 @refreshScope 注释 …