spring boot 集成 Quartz

来源:互联网 发布:博客园 网络异常 编辑:程序博客网 时间:2024/05/29 07:22

第一步、导入依赖

<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.4.1.RELEASE</version>  </parent>  <properties>    <!-- 指定一下jdk的版本 ,这里我们使用jdk 1.8 -->    <java.version>1.8</java.version>    <!--指定使用的编码字符集-->    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- 该依赖必加,里面有sping对schedule的支持 -->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context-support</artifactId>    </dependency>    <!-- quartz依赖 -->    <dependency>      <groupId>org.quartz-scheduler</groupId>      <artifactId>quartz</artifactId>      <version>2.2.1</version>    </dependency>  </dependencies>
第二步、新建需要被监控的HelloJob类

package com.mofa.job;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import java.util.Date;public class HelloJob implements Job{    public void execute(JobExecutionContext context) throws JobExecutionException {        // 执行响应的任务.        System.out.println("HelloJob.execute,"+new Date());    }}
第三步、新建监听类ApplicationContextListerner

package com.mofa;import com.mofa.job.HelloJob;import org.quartz.*;import org.quartz.impl.StdSchedulerFactory;import org.springframework.stereotype.Component;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;@Componentpublic class ApplicationContextListener implements ServletContextListener {    private Scheduler scheduler = null;    public void contextInitialized(ServletContextEvent arg0) {        try {           /*            *在 Quartz 中, scheduler 由 scheduler 工厂创建:DirectSchedulerFactory 或者 StdSchedulerFactory。            * 第二种工厂 StdSchedulerFactory 使用较多,            *因为 DirectSchedulerFactory 使用起来不够方便,需要作许多详细的手工编码设置。            */            // 获取Scheduler实例            scheduler = StdSchedulerFactory.getDefaultScheduler();            scheduler.start();            //具体任务.            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job1","group1").build();            //触发时间点. (每5秒执行1次.)            SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever();            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startNow().withSchedule(simpleScheduleBuilder).build();            // 交由Scheduler安排触发            scheduler.scheduleJob(jobDetail,trigger);        } catch (SchedulerException e) {            e.printStackTrace();        }    }    public void contextDestroyed(ServletContextEvent arg0) {        try {            //关闭定时任务调度器.            scheduler.shutdown();        } catch (SchedulerException e) {            e.printStackTrace();        }    }}
第四步
package com.mofa;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * Created by yangjingmin on 2017/11/15. */@SpringBootApplicationpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}