Java @RefreshScope会迫不及待吗

Java @RefreshScope会迫不及待吗,java,spring,lazy-loading,eager-loading,spring-cloud,Java,Spring,Lazy Loading,Eager Loading,Spring Cloud,SpringCloud中新的@RefreshScope非常棒。但另一个副作用是,bean被延迟加载。大多数情况下,这不是问题,但急切加载的bean允许DI、属性值设置等在启动时得到保证,而不是在运行时得到保证。有没有办法使用@RefreshScope并导致受影响的bean被急切地加载?我通过实现一个捕获刷新事件的侦听器解决了这个“问题”。 然后我迭代上下文中的每个bean并调用getClass()方法。(对bean的任何其他方法调用都将触发其实例化-getClass()非常方便,因为它适用于所有

SpringCloud中新的
@RefreshScope
非常棒。但另一个副作用是,bean被延迟加载。大多数情况下,这不是问题,但急切加载的bean允许DI、属性值设置等在启动时得到保证,而不是在运行时得到保证。有没有办法使用
@RefreshScope
并导致受影响的bean被急切地加载?

我通过实现一个捕获刷新事件的侦听器解决了这个“问题”。 然后我迭代上下文中的每个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();
        }
    }
}