spring开启定时任务,需要注解EnableScheduling
Import注解中,有SchedulingConfiguration
这个SchedulingConfiguration,会创建beanPostProcessor–ScheduledAnnotationBeanPostProcessor
在bean创建过程中回调beanPostProcessor时,ScheduledAnnotationBeanPostProcessor会执行postProcessAfterInitialization方法,扫描每个bean中存在的方法
将任务根据cron、fixRate、fixDelay封装为对应的CronTask、FixedRateTask、FixedDelayTask,并注册到scheduledregistrar中
最后将任务存入到map中,key是bean,value是任务集合
实现了ApplicationListener接口,在监听器回调方法中,执行了finishRegistration方法,
此处扫描SchedulingConfigurer.class,执行configureTasks回调
此处扫描TaskScheduler.class,
没扫到TaskScheduler.class,后面会扫描ScheduledExecutorService.class
进行默认taskScheduler设置,
localExecutor持有线程池,core是1,max是2147483647
启动定时任务