问题小记(二):Spring @Scheduled 浅尝辄止篇

之前一直停留在@EnableScheduling @Scheduled篇,项目工程里只需要配置这两个就能够开发业务了,一直不知道里面是怎么做到的? 带着上次看问题的功夫,简单了解了下内幕。

项目使用springboot版本2.3.x;

@EnableScheduling是干嘛的?

springboot开发体系下约定大于配置,很多事情都别人都已经为我们考虑好了,他们都已经想到了。先说结论:
@EnableScheduling引入了SchedulingConfiguration这个配置类,继而引入了ScheduledAnnotationBeanPostProcessor这个后置bean处理器(生命周期里加工bean的),通过扫描所有的@Scheduled注解的方法,进而生成一个一个的task去定时做任务。

问题小记(二):Spring @Scheduled 浅尝辄止篇


@Scheduled 是干嘛的?

通过上面的描述,感觉@EnableScheduling是全局开关,@Scheduled就是具体的开启装置,编写crontab表达式,执行的是JAVA方法。

ScheduledAnnotationBeanPostProcessor后置加工的逻辑

代码意思就是:后置处理所有的bean时,针对所有的@Scheduled的方法,生成对应CronTask、FixedDelayTask、FixedRateTask几种任务,在ScheduledTaskRegistrar缓存这些Task,初始化完毕后通过ScheduledExecutorService.schedule逐个启动任务线程。

问题小记(二):Spring @Scheduled 浅尝辄止篇

不早啦,先到这里吧。

上一篇:数据结构:图的遍历


下一篇:SpringBoot - 定时任务