zoukankan      html  css  js  c++  java
  • 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的不支持?号,还要注意区分  * 号的使用,解析规则是不同的,详细请自行查阅官档。

  • 相关阅读:
    python多线程实现抓取网页
    调用百度地图实如今地图上定位
    Java创建二叉树
    J2EE的13个规范
    现场故障 案例:控制文件损坏
    数据库原理常见问答
    Lucene整理--中文分词
    Linux发行版
    python中异常好用的工具
    python有趣的一行代码
  • 原文地址:https://www.cnblogs.com/selfchange/p/springboot.html
Copyright © 2011-2022 走看看