在springboot2.x中已經集成了quartz的starter,咱們只需spring
一、在pom文件中引入數據庫
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> |
二、建立application-quartz.yml文件springboot
文件名以application爲前綴,是爲了在主配置文件(application.yml)中引入方便app
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 |
三、在主配置文件中引入quartz配置ide
spring: profiles: include: quartz |
四、建立一個任務控制工具類,用來操做任務spring-boot
因爲在springboot 2.x中,已經默認支持了quartz,提供了調度器工廠(SchedulerFactory)和調度器的bean的定義,並經過以上文件配置完成,因此咱們這裏直接注入scheduler就能夠實現相應的功能。(具體操做略,搜索一下有好多)工具
@Component public class QuartzManager { @Resource private Scheduler schedule; ...spa }繼承 |
五、建立任務類實現Job接口或者繼承QuartzJobBean類。接口
此類中就能夠注入對應的Service實現具體業務。
六、若是想手動初始化任務,能夠建立TaskRunner並實現ApplicationRunner接口,實現run方法來組織定時任務。
@Override public 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); } |
七、能夠使用QuartzManager實現各類任務的動態管理功能