导语
本人想基于elasticJob做一个简版(去除里面的zk以及一些用不到的功能),服务于现有的一些老项目。目的就是基于现有的基础设置,不想额外搭建zk等,顺便可以更深入学些elasticjob
正文
通过导入starter包引入
- Spring Boot的扩展机制:Spring Factories(SPI)
1.1 Spring在META-INF/spring.factories文件中配置接口的实现类名称
1.2 SpringFactoriesLoader实现了检索META-INF/spring.factories文件 - 读取yml配置
2.1 创建@ConfigurationProperties注解的配置类
2.2 @EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效
2.3 @ConditionalOnProperty来控制Configuration是否生效
(1)matchIfMissing = true:当配置不存在也生效
2.4 @Configuration(proxyBeanMethods = false),lite模式下,直接返回新实例对象,提高Spring启动速度
注册定时任务引导类
- 入口SnailJobBootStrapConfiguration#createJobBootstrapBeans
- 遍历配置的任务,并注册为ScheduleJobBootstrap
启动定时任务
- 入口:ScheduleJobBootstrapStartupRunner#run
- 根据入口点进去会发现,最终调用的是quartz的Scheduler#scheduleJob --> scheduler.start();
总结
本篇只是介绍个大概流程,后续会详细介绍里面的功能,愉快地造一波轮子