# spring-boot-starter-quartz **Repository Path**: aidelingyu/spring-boot-starter-quartz ## Basic Information - **Project Name**: spring-boot-starter-quartz - **Description**: 使得Quartz像Spring原生的@Scheduled注解一样好用,同时支持Quartz集群模式 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2020-10-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 痛点 在Spring中使用计划任务,有两种方案可供选择:一、用Spring原生的计划任务,使用起来非常简单,只需要用到@Scheduled注解即可;二、集成Quartz来做计划任务,需要配置大量的Quartz原生类。   对于第一种来说,局限性在于不支持计划任务的集群,如果有多个计划任务的项目一起启动的话,每个JVM都会执行一遍预定时间的计划任务。对于Quartz来说,可以通过集群来保证在预定的时间点只会执行一次对应的计划任务。   这里有一个问题呢,就是Spring集成了Quartz,但却并没有提供像@Scheduled这样好用的注解。   这个项目就是为了解决上述问题而生的,让Quartz的集成变得更简单直接,同时支持Quartz的集群模式。     # Quartz集群 先说一下Quartz的集群。   Quartz的集群有赖于数据库的支持,所以这里我们需要一个专门的库。建表的sql在resources/sqls下面(只支持MySQL),根据要用的数据库引擎选择不同的sql文件。   这里要注意一下,这个建表的sql文件不是每个版本都适用的,这里只适用于quartz的2.2.3版本。如果你要换版本,去官网下载对应版本的quartz,里面有相应的sql。   建完库之后,在使用这个Starter的时候,配置文件中需要有这些属性: ``` #是否启用集群模式 quartz.cluster=true #计划任务实例名称 quartz.scheduler.instanceName= quartz.datasource.driver-class-name= quartz.datasource.url= quartz.datasource.username= quartz.datasource.password= quartz.datasource.maxConnections= ``` 下面是一些数据库配置。     # @QuartzScheduled注解 @QuartzScheduled和@Scheduled使用起来比较相似,注解到方法上即可。   @QuartzScheduled目前只支持cron表达式,例如: ``` /** 凌晨自动同步一次 */ @QuartzScheduled("20 0 0 * * ?") public void execute() { alarmService.sendSyncDingUsers(); } ```