Quartz定时器的应用

时间:2020-04-13
本文章向大家介绍Quartz定时器的应用,主要包括Quartz定时器的应用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,implements Job,extends QuartzJobBean

后两种方法比较简单易懂,我们介绍第一种MethodInvokingJobDetailFactoryBean的使用

一般spring中使用MethodInvokingJobDetailFactoryBean是配置在xml中的,这里介绍一下在springcloud中的简单实用

1、首先,在pom.xml中添加Quartz的依赖

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
</dependency>

 2、添加一个被调度的实现类,里面有需要执行的定时方法

@Component
public class QuartzTest {
public void test(){
String s = "my name is zhongguo";
Date date = new Date();
System.out.println("定时任务--每5秒启动一次,现在时间"+date +"输出:"+s);
}
}

3、添加Quartz定时配置

@Configuration
public class QuartzConfig {
    private String time = "*/5 * * * * ? ";
    //配置定时任务
    @Bean(name = "quartzTestJobDetail")
    MethodInvokingJobDetailFactoryBean configTask(QuartzTest quartzTest){
        MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean();
        jobDetailFactoryBean.setConcurrent(false);// 是否并发执行
        jobDetailFactoryBean.setTargetObject(quartzTest);// 为需要执行的实体类对应的对象
        jobDetailFactoryBean.setTargetMethod("test");  // 需要执行的方法
        return jobDetailFactoryBean;
    }
    //配置触发器
    @Bean(name = "quartzTestJobTrigger")
    CronTriggerFactoryBean configTrigger(@Qualifier("quartzTestJobDetail") MethodInvokingJobDetailFactoryBean quartzTestJobDetail){
        CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean();
        triggerFactoryBean.setJobDetail(quartzTestJobDetail.getObject());
        triggerFactoryBean.setCronExpression(time);// cron表达式
        return triggerFactoryBean;
    }
    @Bean(name = "quartzTestTrigger")
    CronTrigger quartzTestTrigger(@Qualifier("quartzTestJobTrigger")CronTriggerFactoryBean quartzTestTrigger ){
        return quartzTestTrigger.getObject();
    }
    //配置Scheduler
    @Bean(name = "scheduler")
    SchedulerFactoryBean schedulerFactory( @Qualifier("quartzTestTrigger") Trigger quartzTestTrigger){
        SchedulerFactoryBean bean = new SchedulerFactoryBean();
        bean.setStartupDelay(1);// 延时启动,应用启动1秒后
        bean.setAutoStartup(true);
        bean.setTriggers(quartzTestTrigger);// 注册触发器
        return bean;
    }
}

4、启动springcloud项目测试,结果显示:定时任务正确

原文地址:https://www.cnblogs.com/jing5464/p/12692078.html