Spring Cloud中的新@RefreshScope
非常棒。但副作用是豆子变得懒散。大多数情况下,这是一个非问题,但是急切加载的bean允许在启动时确保DI,属性值设置等,而不是在运行时。有没有办法使用@RefreshScope
并导致受影响的bean被急切地加载?
答案 0 :(得分:0)
我通过实现捕获Refresh事件的侦听器解决了这个“问题”。 然后,我遍历上下文中的每个bean并调用getClass()方法。 (对bean的任何其他方法调用都会触发其实例化-getClass()很方便,因为它存在于所有bean中。)
@Service
public class RefreshListener {
private final Logger logger = LoggerFactory.getLogger(RefreshListener.class);
@Autowired
ApplicationContext applicationContext;
@EventListener
public void onRefreshScopeRefreshed(final RefreshScopeRefreshedEvent event) {
logger.info("Received Refresh event. Refreshing all beans...");
for (String beanName : applicationContext.getBeanDefinitionNames()) {
logger.info("Refreshing bean " + beanName);
applicationContext.getBean(beanName).getClass();
}
}
}
希望有帮助。