问题描述
是的,带有注解的方法@PostConstruct
可以保证首先执行。
的@Scheduled
注释由活化ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization()被调用后 任何豆初始化回调(像的InitializingBean的afterPropertiesSet方法或自定义的初始化方法)。
解决方法
假设我正在定义一个缓存bean,它将在启动应用程序时初始化,并以固定的间隔刷新,如下所示:
@Component
public class Cache {
...
@PostConstruct
public void initializeCache() {
...
}
@Scheduled(fixedRate = 60L * 1000L)
public void refreshCache() {
...
}
}
即使我未设置初始延迟,也可以确保@PostConstruct下的initializeCache()方法在第一次调度的refreshCache()调用之前立即执行吗?