SpringBoot整合Quartz

SpringBoot整合Quartz

实现

  1. 引入依赖 spring-boot-starter-quartz

  2. 创建一个Job 继承Job类

  3. 重写excute 方法 参数表示定时任务执行的环境(上下文)

  4. 创建JobDetail 4.1 创建QuartzConfig配置类(注意加上@Configuration注解)

    4.2 在QuartzConfig中创建一个JobDetail()方法 加上@Bean注入容器

    @Bean
    public JobDetail jobDetail(){
        //Job.class为第二步创建的job类,任务绑定
        return JObBuilder.newJob(Job.class)
            .storeDurably() //持久化(没有对应的Trigger去制定执行条件,没有意义,但是又需要保留 采取持久化操作)
            .withIdentity("name任务名","group任务组") //定义唯一标识 区分其他任务
            .usingJobData("count",1) //数据初始化 1为任务执行次数
            .build();
    }
  5. 指定一个Trigger,触发器,设定Job执行的时机

    5.1 在QuartzConfig配置类中定义一个Trigger方法

    @Bean
    public Trigger trigger(){
        //cro表达式
        String croExpression="0 0 * * * ?
    ";//表示每小时执行一次
        return TriggerBuilder.newTrigger()
            .withIdentity("trggger1","group") //唯一标识
            .forJob(JobDetail()) //关联绑定JobDetail
            .withSchedule(CronScheduleBuilder.cronSchedule(croExpression)) //通过Cron表达式指定时间规则
            .build();
    }
  6. 在Job类中的重写的execute() 编写任务内容

    @PersistJobDataAfterExecution// 设置一个有状态的Job count不带注解每次都会创建一个新的jobDetail对象,每次输出count都是初始值,加上注解就可以每次执行++
    @DisallowConcurrentRExecution //禁止并发访问同一个job (当任务执行所需时间>任务间隔时间 任务多次执行 导致数据错乱  但是任务间隔时间就被忽略,会等到上一个任务结束之后才会继续执行)
    @Component
    public class MyJob implements Job{
        @Autowired
        private Scheduler scheduler;
        
    @Override
    public void execute(JobExecutionContext context) throws JObExecutionExcep
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值