使用@PostConstruct注释的方法是否可以保证在同一个bean中使用@Scheduled的方法之前执行?

时间:2015-07-08 22:11:48

标签: java spring

说我定义了一个缓存bean,它将在启动应用程序时初始化,并将以固定的间隔刷新,如下所示:

@Component
public class Cache {

     ...

     @PostConstruct
     public void initializeCache() {
     ...
     }

     @Scheduled(fixedRate = 60L * 1000L)
     public void refreshCache() {
     ...
     }

}

@PostConstruct下的initializeCache()方法是否可以保证在第一次调度的refreshCache()调用之前立即执行,即使我没有设置初始延迟?

1 个答案:

答案 0 :(得分:4)

是的,保证用@PostConstruct注释的方法首先执行。

@Scheduled注释由ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization()激活,在任何bean初始化回调之后调用(如InitializingBean' afterPropertiesSet或自定义init方法)。 / p>