Springboot集成quartz

1.添加依赖

#该依赖有spring对quartz的支持
<dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-context-supportartifactId>
dependency>
<dependency> 
    <groupId>org.quartz-schedulergroupId>
    <artifactId>quartzartifactId>
    <version>2.2.1version>
dependency>
<dependency> 
    <groupId>org.quartz-schedulergroupId>
    <artifactId>quartz-jobsartifactId>
    <version>2.2.1version>
dependency>

2.实现思路
参考https://blog.csdn.net/lkl_csdn/article/details/73613033
https://www.jianshu.com/p/e95d6764b4d9

自定义注解标注在定时任务类和定时方法上
定义实体类,包含类名、方法名,状态等属性
定义一个扫描类,实现ApplicationContextAware接口和InitializingBean,获取到ApplicationContext对象,利用ApplicationContext对象获取到所有标注了自定义注解的类,然后拿到所有标注了自定义注解的方法,将属性插入到数据库。覆盖afterPropertiesSet方法,在该方法中调用上述方法。
定义工具类ApplicationContextUtil,利用ApplicationContextUtil根据全类名获取具体的对象。再拿到对象下所有标注了自定义注解的方法,执行该方法
定义监听器类实现ApplicationListener接口,去数据库查询所有定时任务,如果状态为null,则设为running,并修改数据库数据,把它添加到Scheduler。如果状态为not running ,则暂停该任务,最后调用start方法启动Scheduler。
实现job接口,覆盖execute方法,调用上述工具类方法
定义Controller和Service,在service中注入SchedulerFactoryBean,想直接引用SchedulerFactoryBean,要先把它注入到ioc容器中,使用@component注解+bean注解注入SchedulerFactoryBean。利用SchedulerFactoryBean来获取Scheduler,并且用Scheduler定义一个start方法。提供动态调度定时任务的接口。

你可能感兴趣的:(#,SpringBoot,spring,boot,java,spring)