说我定义了一个缓存bean,它将在启动应用程序时初始化,并将以固定的间隔刷新,如下所示:
@Component
public class Cache {
...
@PostConstruct
public void initializeCache() {
...
}
@Scheduled(fixedRate = 60L * 1000L)
public void refreshCache() {
...
}
}
@PostConstruct下的initializeCache()方法是否可以保证在第一次调度的refreshCache()调用之前立即执行,即使我没有设置初始延迟?
答案 0 :(得分:4)
是的,保证用@PostConstruct
注释的方法首先执行。
@Scheduled
注释由ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization()激活,在任何bean初始化回调之后调用(如InitializingBean' afterPropertiesSet或自定义init方法)。 / p>