`
李楷呀
  • 浏览: 3990 次
社区版块
存档分类
最新评论

springboot 集成Quartz 实现定时任务

阅读更多

           本章我们使用Quartz在java project的项目中进行定时任务的实现,首先我们需要在pom文件引入 quartz jar 包,

          

           <dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-quartz</artifactId>

           </dependency>

 

           接下来我们编写具体的执行任务类,具体的执行需要继承QuartzJobBean 类 或者job接口都可以,我们这里是继承QuartzJobBean 类    ,如下:

     

 

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

 

public class HelloworldJob extends QuartzJobBean  {

 

@Override

public void executeInternal(JobExecutionContext context) throws JobExecutionException {

// TODO Auto-generated method stub

System.out.println("Hello world!:" + context.getJobDetail().getKey());

}

 

}

 

        接下来编写任务的启动类,需要在类上加@Configuration注解,以便被扫描到,在方法上增加注解@Bean,注入倒容器中,如下:

 

 

import org.quartz.CronScheduleBuilder;

import org.quartz.JobBuilder;

import org.quartz.JobDetail;

import org.quartz.Trigger;

import org.quartz.TriggerBuilder;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class QuartzDemo {

@Bean

    public JobDetail myJobDetail(){

       JobDetail jobDetail = JobBuilder.newJob(HelloworldJob.class)

            .withIdentity("myJob1","myJobGroup1")//定义Job类为HelloworldJob类,这是真正的执行逻辑所在

            .usingJobData("job_param","job_param1")//给任务execute传递参数

            .storeDurably()

                .build();

        return jobDetail;

    }

    @Bean

    public Trigger myTrigger(){

        Trigger trigger = TriggerBuilder.newTrigger()

                .forJob(myJobDetail())

                .withIdentity("myTrigger1","myTriggerGroup1")

                .usingJobData("job_trigger_param","job_trigger_param1")

                .startNow()

                //.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever())

                .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ? 2019"))

                .build();

        return trigger;

    }

 

}

 

 

下面启动项目就能看到任务打印信息了:

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

Hello world  Quartz !:myJobGroup1.myJob1

 

 

 

 

 

         

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics