浅谈java定时任务:quartz、quartz with spring

来源:互联网 发布:mac ae英文版改中文版 编辑:程序博客网 时间:2024/06/03 15:16

本文讲一下quartz、quartz with spring

  • 添加依赖:
 <dependency>            <groupId>org.quartz-scheduler</groupId>            <artifactId>quartz</artifactId>            <version>1.8.5</version> </dependency>

quartz

  • 注册job
public class InvokeQuartz {    public void start() {        SchedulerFactory schedulerFactory = new StdSchedulerFactory();        try {            Scheduler scheduler = schedulerFactory.getScheduler();            JobDetail jobDetail = new JobDetail("quartzJob", MyJob.class);            CronTrigger cronTrigger = new CronTrigger("quartzTrigger");            CronExpression cronExpression = new CronExpression("* * * * * ?");            cronTrigger.setCronExpression(cronExpression);            scheduler.scheduleJob(jobDetail,cronTrigger);            scheduler.start();        } catch (Exception e) {            e.printStackTrace();        }    }}
  • 实现job
public class MyJob implements Job {    @Override    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {        System.out.println("quartz 任务开始-----------");    }}
  • 初始化定时任务
<bean id="invokeQuartz" class="com.task.InvokeQuartz" init-method="start"/>

quartz with spring

quartz with spring 将 配置信息全部交给spring 使用者只需要专心实现定时任务主要逻辑即可

  • xml 配置

      <!-- ======================== 调度工厂 ======================== --><bean id="SpringJobSchedulerFactoryBean"     class="org.springframework.scheduling.quartz.SchedulerFactoryBean">    <property name="triggers">        <list>            <ref bean="taskTrigger"/>        </list>    </property></bean> <!-- ======================== 调度触发器 ======================== --><bean id="taskTrigger"      class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">    <property name="jobDetail">        <ref bean="myJobDetail" />    </property>    <property name="cronExpression">    //cron 表达式(在另一篇文章里有详细介绍)        <value>0/20 * * * * ?</value>    </property></bean><!-- job的配置开始 --><bean id="myJob" class="com.task.MyJob"/><bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <property name="targetObject" ref="myJob"/>    <property name="targetMethod" value="execute"/>    <property name="concurrent" value="false" /></bean>
  • MyJob 实现

public class MyJob{    public void execute() {        System.out.println("定时任务开始");    }}
0 0
原创粉丝点击