`

117. Spring Boot Quartz在Java 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

 

 

这一篇文章,我们紧接着上一篇的文章,讲讲在Quartzjava project的项目中如何进行使用,在这里我们使用maven进行构建项目。先看下本章的大纲:

(1)新建工程quartz-java;
(2)配置pom.xml文件;
(3)编码说明;
(4)编写Job类;
(5)编写启动类进行代码测试;
(6)quartz.properties配置文件说明;

 

       接下里一起看下具体的内容:

1)新建工程quartz-java;

       新建一个java project取名为quartz-java

2)配置pom.xml文件;

       pom.xml文件中添加quartz的依赖:

<dependency>

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

            <artifactId>quartz</artifactId>

            <version>2.2.3</version>

</dependency>

 

3)编码说明;

(一)首先我们需要定义一个任务类,比如为HelloJob ,该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在这个方法中就是我们具体的任务执行的地方。

(二)在哪里定义“在什么时候执行什么任务呢?”:那么我们需要Scheduler,此类的创建方式使用Quartz提供的工厂类StdSchedulerFactory.getDefaultScheduler()进行创建。

(三)如何触发呢scheduler.scheduleJob(jobDetail,trigger);进行触发定时任务,在这里需要两个参数。jobDetail可以通过JobBuilder.newJob进行创建,在这里就需要制定一个Job类了,也就是我们第一步创建的HelloJobtrigger类的话,可以通过TriggerBuilder.newTrigger进行创建。

 

4)编写Job类;

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

    }

   

}

 

5)编写启动类进行代码测试;

Main方法中进行编码测试:

package com.kfit;

 

import java.util.concurrent.TimeUnit;

 

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;

 

import com.kfit.job.HelloJob;

 

/**

 * 直接在Main方法中进行启动测试.

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2017421

 */

public class App {

    public static void main(String[] args) throws SchedulerException, InterruptedException {

       /*

        * Quartz 中, scheduler scheduler 工厂创建:DirectSchedulerFactory 或者 StdSchedulerFactory第二种工厂 StdSchedulerFactory 使用较多,

        *因为 DirectSchedulerFactory 使用起来不够方便,需要作许多详细的手工编码设置。

        */

       // 获取Scheduler实例

       Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

       scheduler.start();

       System.out.println("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);

      

       //睡眠20.

       TimeUnit.SECONDS.sleep(20);

       scheduler.shutdown();//关闭定时任务调度器.

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

    }

}

执行代码查看控制台的打印信息:

-----------------------------------------------------------

scheduler.start

HelloJob.execute,Fri Apr 21 19:50:01 CST 2017

HelloJob.execute,Fri Apr 21 19:50:06 CST 2017

HelloJob.execute,Fri Apr 21 19:50:11 CST 2017

HelloJob.execute,Fri Apr 21 19:50:16 CST 2017

HelloJob.execute,Fri Apr 21 19:50:21 CST 2017

scheduler.shutdown

 

 

6quartz.properties配置文件说明;

       Quartz中有一个配置quartz.properties可以配置参数,比如:线程池的容量,实例名称。比如:

org.quartz.scheduler.instanceName = MyScheduler

org.quartz.threadPool.threadCount = 3

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

org.quartz.threadPool.threadCount:配置线程池的容量,即表示同时最多可运行的线程数量。

org.quartz.scheduler.instanceNamescheduler实例名称。

org.quartz.jobStore.classjob存储方式,RAMJobStore是使用JobStore最简单的一种方式,它也是性能最高效的,顾名思义,JobStore是把它的数据都存储在RAM中,这也是它的快速和简单配置的原因;JDBCJobStore也是一种相当有名的JobStore,它通过JDBC把数据都保存到数据库中,所以在配置上会比RAMJobStore复杂一些,而且不像RAMJobStore那么快,但是当我们对数据库中的表的主键创建索引时,性能上的缺点就不是很关键的了。

 

您可以在代码中打印scheduler实例名称,如下代码:

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

       scheduler.start();

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

 

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

 

视频&交流平台

à 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的基本知识,可以开始创建和管理自己的定时任务了。

    Java_Spring与Quartz的整合

    在Java Spring中整合Quartz,可以利用Spring的管理能力来控制Quartz的作业和触发器,使得整个系统更加灵活和易于维护。以下将详细介绍如何进行Spring与Quartz的整合。 1. **集成步骤** - 添加依赖:首先,确保在...

    关于spring中quartz的配置

    在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中...通过以上步骤,你就可以在Spring中成功配置并使用Quartz进行任务调度了。注意,实际应用中还需要根据具体需求调整配置和Job的实现。

    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....

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

    在IT行业中,Spring Boot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程。Quartz是另一个常用于任务调度的开源框架,它允许开发者定义定时任务来执行特定的操作。在这个场景中,我们将...

    spring-boot-Quartz-1.zip

    SpringBoot与Quartz的整合是Java开发者在构建可扩展、自动化任务系统时常见的选择。Quartz是一个开源的作业调度框架,它可以安排和执行基于时间的任务,而SpringBoot则提供了简化Java应用开发的便利性。本案例中,...

    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 附加功能( 断点,失火处理...

    Spring4.X+Quartz2.X

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

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

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

    java-springboot-quartz-定时任务.zip

    在上述代码中,`MyTask`是你自定义的任务类,它需要实现`org.quartz.Job`接口,并重写`execute`方法,以定义任务的具体逻辑。 ```java import org.quartz.JobExecutionContext; import org.quartz....

    spring-boot-quartz.zip

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

    Spring+Quartz2

    Spring 和 Quartz2 是两个在 Java 开发中广泛使用的框架,它们在企业级应用中承担着重要的角色。Spring 是一个全面的、开源的应用框架,而 Quartz2 是一个强大的、开源的作业调度库,常用于实现定时任务。下面我们将...

    spring-quartz定时设置详细说明

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

    Spring Boot实战派(源码)

    《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...

    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-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中Quartz调度器的使用

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

    spring-boot示例项目

    在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目需求的各种组件和积累各种解决方案。基于这样的背景下,我开源了本示例项目,方便大家快速上手Spring Boot、...

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

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

Global site tag (gtag.js) - Google Analytics