在springboot2.x中已经集成了quartz的starter,我们只需
1、在pom文件中引入
|
2、创建application-quartz.yml文件
文件名以application为前缀,是为了在主配置文件(application.yml)中引入方便
spring: quartz: #相关属性配置 properties: org: quartz: scheduler: instanceName: clusteredScheduler instanceId: AUTO jobStore: class: org.quartz.impl.jdbcjobstore.JobStoreTX driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate tablePrefix: QRTZ_ isClustered: true clusterCheckinInterval: 10000 useProperties: false threadPool: class: org.quartz.simpl.SimpleThreadPool threadCount: 10 threadPriority: 5 threadsInheritContextClassLoaderOfInitializingThread: true #数据库方式 job-store-type: jdbc # 初始化表结构 # jdbc: # initialize-schema: never |
3、在主配置文件中引入quartz配置
spring: profiles: include: quartz |
4、创建一个任务控制工具类,用来操作任务
由于在springboot 2.x中,已经默认支持了quartz,提供了调度器工厂(SchedulerFactory)和调度器的bean的定义,并通过以上文件配置完成,所以我们这里直接注入scheduler就可以实现相应的功能。(具体操作略,搜索一下有好多)
@Componentpublic class QuartzManager { @Resource private Scheduler schedule; ... } |
5、创建任务类实现Job接口或者继承QuartzJobBean类。
此类中就可以注入对应的Service实现具体业务。
6、如果想手动初始化任务,可以创建TaskRunner并实现ApplicationRunner接口,实现run方法来组织定时任务。
@Overridepublic void run(ApplicationArguments args) throws Exception { LOGGER.info("初始化任务"); String jobName = "abcJob"; String jobGroup = "DEFAULT"; String description = "负责清理超时的"; String jobClassName = "com.xxx.AbcJob"; String cronExpression = "0 0 0 * * ? *"; quartzManager.addOrUpdateJob(AbcJob.class, jobName, jobGroup, cronExpression);} |
7、可以使用QuartzManager实现各种任务的动态管理功能