`

118. Spring Boot Quartz在Web Project中使用【从零开始学Spring Boot】

阅读更多

 

【视频&交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

【下节预告:Spring Boot集成Quartz

Quartz也常用在Web应用中,常见的是交由Spring托管的形式,但这里并非介绍这个。这里介绍QuartzWeb应用中单独使用。我们看下本章的大纲:

(1)大体思路说明;
(2)新建一个Web Project;
(3)创建一个Job;
(4)创建一个ApplicationContextListener;
(5)常用的Cron Schedule;

 

       接下来看下具体的内容:

1)大体思路说明;

一般来说,Web应用启动时,应注册已经确定的定时任务;一些动态的、未确定触发时间的定时任务,后续可通过静态的Scheduler注册。

       所以我们创建一个Web项目,在ServerContextListener初始化的时候,添加我们的定时定时任务调度器,在销毁的时候,关闭任务调度器。

 

2)新建一个Web Project;

       新建一个web maven project

       pom.xml文件中添加依赖:

 

<dependency>

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

            <artifactId>quartz</artifactId>

            <version>2.2.3</version>

</dependency>

 

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>servlet-api</artifactId>

    <version>3.1-b02</version>

</dependency>

 

 

3)创建一个Job;

创建一个实现Job类的Class取名为HelloJob,代码如下:

package com.kfit.job;

 

import java.util.Date;

 

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

 

/**

 * 任务类.

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2017421

 */

public class HelloJob implements Job{

 

    public void execute(JobExecutionContext context) throws JobExecutionException {

        // 执行响应的任务.

       System.out.println("HelloJob.execute,"+new Date());

      

    }

   

}

 

4)创建一个ApplicationContextListener

新建一个实现ServletContextListener的类ApplicationContextListener,代码如下:

package com.kfit.job;

 

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

 

import org.quartz.JobBuilder;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SimpleScheduleBuilder;

import org.quartz.Trigger;

import org.quartz.TriggerBuilder;

import org.quartz.impl.StdSchedulerFactory;

 

@WebListener

public 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();

           System.out.println("scheduler.start");

           System.out.println(scheduler.getSchedulerName());

          

           //具体任务.

           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();

       }//关闭定时任务调度器.

    }

 

   

}

 

 

5)常用的Cron Schedule

相对于其他方式定义定时任务的触发时间,我们较常用Cron Schedule:

// 具体任务

       JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();

 

       // 触发时间点

       CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 * * * * ? *");

       Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")

               .withSchedule(cronScheduleBuilder).build();

 

// 交由Scheduler安排触发

scheduler.scheduleJob(job, trigger);

 

视频&交流平台

à SpringBoot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

 

分享到:
评论

相关推荐

    spring-boot-quartz

    Spring Boot 是一个流行的 Java 框架,用于简化Spring应用程序的初始设置和配置。...通过上述步骤,你已经掌握了在Spring Boot应用中集成和使用Quartz的基本知识,可以开始创建和管理自己的定时任务了。

    关于spring中quartz的配置

    如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...

    spring boot + quartz 动态管理 分布式

    在IT行业中,Spring Boot和Quartz是两个非常重要的框架,它们在企业级应用开发中扮演着关键角色。Spring Boot简化了Spring应用的初始搭建以及开发过程,提供了开箱即用的功能,而Quartz则是一个强大的任务调度库,常...

    spring boot集成quartz定时器

    1. 定义Job接口:Spring Boot中的Job需要实现`org.springframework.batch.core.Job`接口,但是这里我们使用Quartz,所以需要实现`org.quartz.Job`接口。例如: ```java import org.quartz.Job; import org.quartz....

    Java_Spring与Quartz的整合

    - 通过实现`org.springframework.scheduling.quartz.JobExecutionException`,可以捕获Job执行过程中的异常,进行统一处理。 8. **事务支持** - 如果Job需要在数据库事务中执行,可以利用Spring的事务管理功能,...

    spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序.zip

    spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...

    spring-boot-Quartz-1.zip

    本案例中,我们将深入探讨如何在SpringBoot应用中集成Quartz定时任务框架,以及如何配置和运行每20秒执行一次的任务。 首先,我们需要在项目中添加Quartz的依赖。在SpringBoot应用的`pom.xml`或`build.gradle`文件...

    springboot整合quartz定时任务yml文件配置方式

    以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及涉及的Spring Cloud Alibaba、Dubbo和Nacos的相关知识。 首先,我们需要在`pom.xml`中引入相关的依赖。Spring Boot的`spring-boot-...

    Spring4.X+Quartz2.X

    3. **定义Job**:创建实现`org.springframework.core.task.TaskExecutor`接口的类,或者直接使用`org.springframework.scheduling.quartz.JobDetailBean`,来定义具体的任务逻辑。 4. **配置Trigger**:创建一个...

    spring-boot使用quartz框架定时发送邮件

    在这个场景中,我们将讨论如何在Spring Boot中集成Quartz框架来实现定时发送邮件的功能,以及如何从数据库中读取数据生成报表。 首先,我们需要在Spring Boot项目中引入Quartz的相关依赖。在`pom.xml`或`build....

    spring2与quartz在Web整合

    Spring 2 和 Quartz 是两个在 Java Web 开发中非常重要的框架。Spring 是一个全面的开源应用框架,提供了依赖注入(DI)、面向切面编程(AOP)以及丰富的数据访问和事务管理功能。Quartz,则是一个功能强大的作业...

    spring-boot-quartz.zip

    在Spring Boot中,可以使用`@Component`注解创建一个作业类,然后使用`@DisallowConcurrentExecution`或`@PersistJobDataAfterExecution`注解来控制并发性和数据持久化。例如: ```java import org.quartz.Job; ...

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    Spring Boot实战派(源码)

    《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并...通过分析《Spring Boot实战派》源码,读者不仅可以了解上述技术点,还能学习到如何在实际项目中应用这些技术,提升开发效率和代码质量。

    Spring Boot 教程、技术栈示例代码,快速简单上手教程。

    在 `6.spring-boot-examples__ityouknow` 压缩包中,可能包含多个示例项目,每个项目都展示了 Spring Boot 的不同应用场景,比如: - `spring-boot-web-example`:展示如何创建一个简单的 RESTful API。 - `spring-...

    spring-quartz定时设置详细说明

    Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,而 Quartz 是一个强大的任务调度库。将它们结合使用,我们可以实现基于 Spring 的应用程序中的定时任务管理。以下是对 ...

    Spring中Quartz调度器的使用 示例代码

    此外,如果你需要动态管理和监控你的定时任务,可以使用Spring Boot的Actuator模块,或者Quartz的Web管理界面。这需要额外的配置和开发工作。 总结一下,Spring结合Quartz调度器的使用主要包括以下几个步骤: 1. ...

    Spring中Quartz调度器的使用

    在 Spring 中使用 Quartz 调度器,需要编写作业类继承 org.springframework.scheduling.quartz.QuartzJobBean 类。下面是一个简单的示例: ```java package bean.jobDetailBean; import org.quartz....

    schedule-job, 基于Spring Boot Quartz 的分布式任务调度系统.zip

    在Spring Boot中集成Quartz,首先需要添加Quartz和Spring Boot Starter Scheduler的依赖。在`pom.xml`文件中,添加如下依赖: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-...

    spring的quartz使用实例

    在Spring中,通常会使用`org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean`来包装一个带有@Scheduled注解的方法。 5. **Cron表达式** CronTrigger允许使用Cron表达式来定义触发时间,如...

Global site tag (gtag.js) - Google Analytics