Spring 配置 定时任务

Posted 三笑的酒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 配置 定时任务相关的知识,希望对你有一定的参考价值。

官档地址:https://docs.spring.io/spring/docs/5.1.4.RELEASE/spring-framework-reference/integration.html#scheduling

spring里可以做两种方式的定时任务:

1. spring 自带的 定时任务 实现 

@EnableScheduling , @Scheduled

两个注解便可以 开启一个定时 任务(当然,类上面要 声明 @Configuration注解)

cron表达式 每分钟的 30秒执行一次.

关于 @Scheduled 支持的配置,请进入源码查看,简单明了。

另外你可能想自己指定线程池,那么你只需要实现SchedulingConfigurer接口。

通过 注册机 自定义配置,如下:

 

2. 集成Quartz

spring 或 springboot集成Quartz那是相当简单

 首先是依赖:

springboot依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

spring依赖:(不写pom了)

其次是代码:

再者, 需要搞清楚Quartz里面的三个角色:

scheduler (SchedulerFactoryBean)    调度器

-> trigger  (SimpleTriggerFactoryBean或CronTriggerFactoryBean)   触发器

-> job       (JobDetailFactoryBean或MethodInvokingJobDetailFactoryBean).   执行器

如果是springboot,你可以实现 SchedulerFactoryBeanCustomizer 接口去初始化 SchedulerFactoryBean。

3. cron表达式

spring自带的定时任务 支持 Cron表达式,参见(org.springframework.scheduling.support.CronSequenceGenerator)

quartz的Cron表达式。

 

两者是有一些区别的,Spring的不支持?号,还要注意区分  * 号的使用,解析规则是不同的,详细请自行查阅官档。

以上是关于Spring 配置 定时任务的主要内容,如果未能解决你的问题,请参考以下文章

如何在spring中配置定时任务

使用spring@Scheduled进行任务定时

spring实现动态定时任务

Spring使用@Scheduled注解配置定时任务

spring schedule定时任务:配置文件的方式

如何在spring中配置定时任务