`

利用Spring进行Quartz定时开发的两种方式进行讲解

阅读更多
利用Spring进行Quartz定时开发的两种方式进行讲解
Spring+Quartz结合方式,大体有两种方式可以达到定时任务功能

1 借助于Spring的org.springframework.scheduling.quartz.JobDetailBean的类功能,继承Spring封装Quartz的org.springframework.scheduling.quartz.QuartzJobBean类,要实现executeInternal方法,并把其中涉及到需要定时任务处理的功能放入其中


Spring配置如下:

1   
2        <bean id="saveProjectJob"
3        class="org.springframework.scheduling.quartz.JobDetailBean">
4        <property name="jobClass">
5        <value>
6        com.gresoft.components.fileupload.service.ParseFileQuartz
7        </value>
8        </property>
9        <property name="jobDataAsMap">
10        <map>
11        <entry key="readXmlService">
12        <ref bean="readXmlService" />
13        </entry>
14        </map>
15        </property>
16        </bean>
17        <bean id="saveCron"
18        class="org.springframework.scheduling.quartz.CronTriggerBean">
19        <property name="jobDetail">
20            <ref local="saveProjectJob" />
21        </property>
22        <property name="cronExpression">
23            <value>0/30 * * * * ? </value>
24        </property>
25    </bean>
26    <bean id="scheduler"
27        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
28        <property name="triggers">
29            <ref local="saveCron" />
30        </property>
31    </bean>
注意上述红色字体 <map>结点,这里主要是为了在定时任务需要使用到Bean,通过Spring给注入进来,如果不写明,就会报
java.lang.NullPointerException错误,主要是因为没有注入Bean


方法代码如下:

1package com.gresoft.components.fileupload.service;
2
3import org.quartz.JobExecutionContext;
4import org.quartz.JobExecutionException;
5import org.springframework.scheduling.quartz.QuartzJobBean;
6
7public class ParseFileQuartz extends QuartzJobBean {
8    private readXmlService readXmlService;
9
10    @Override
11    protected void executeInternal(JobExecutionContext jobexecutioncontext)
12            throws JobExecutionException {
13        // TODO Auto-generated method stub
14        // System.out.println(genderManager.get(1).getGenderName());
15        readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");
16    }
17
18    public void setReadXmlService(readXmlService readXmlService) {
19        this.readXmlService = readXmlService;
20    }
21}
22

2 借助于Spring 的org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean类,使用此方法使开发人员对Quartz完全透明,需要实现定时任务的方法只是一个普通方法

Spring配置文件如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
3 <beans>
4
5    <bean id="saveProjectJob"
6        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
7        <property name="targetObject">
8            <ref local="parseQuartz" />
9
10        </property>
11        <property name="targetMethod">
12            <value>execute </value>
13        </property>
14
15
16    </bean>
17    <bean id="parseQuartz" class="com.gresoft.components.fileupload.service.ParseFileQuartzOther">
18        <property name="readXmlService" ref="readXmlService" />
19    </bean>   
20 <bean id="saveCron"
21        class="org.springframework.scheduling.quartz.CronTriggerBean">
22        <property name="jobDetail">
23            <ref local="saveProjectJob" />
24        </property>
25        <property name="cronExpression">
26            <value>0/30 * * * * ? </value>
27        </property>
28    </bean>
29    <bean id="scheduler"
30        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
31        <property name="triggers">
32            <ref local="saveCron" />
33        </property>
34    </bean>
35
业务代码如下:

1package com.gresoft.components.fileupload.service;
2
3public class ParseFileQuartzOther {
4    private readXmlService readXmlService;
5
6
7    public void execute(){
8        // TODO Auto-generated method stub
9        // System.out.println(genderManager.get(1).getGenderName());
10        readXmlService.refreshFileList("D:/tomcat/webapps/sanitation/upload");
11    }
12
13    public void setReadXmlService(readXmlService readXmlService) {
14        this.readXmlService = readXmlService;
15    }
16}
17

以上就是结合Spring使用Quartz编写定时任务两种方式,Spring很好的封装使用Quartz的细节,第一种方式是利用SPring封装的Quartz类进行特定方法的实现,第二种是通过透明的使用Quartz达到定时任务
转:http://www.unix-center.net/bbs/viewthread.php?tid=16839
分享到:
评论

相关推荐

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    Spring中定时任务

    首先,Spring提供了两种主要的定时任务实现:`Spring Task`(也称为Spring自己的任务调度器)和`Quartz Scheduler`。`Spring Task`相对简单,适用于轻量级的定时需求,而`Quartz`则功能强大,适合复杂的调度场景。 ...

    两种方式通过spring实现定时执行任务操作

    本文将详细讲解两种通过Spring实现定时任务的方法:Spring的`TimerTask`和`Spring Batch`的`Tasklet`。我们将涵盖这两种方法的基本原理、配置以及使用源码,确保你能全面理解如何在实际项目中应用。 ### 一、Spring...

    动态加载属性文件与SpringQuartz的应用

    Spring Quartz是一个强大的任务调度框架,基于Quartz Scheduler进行了Spring化的封装,使得在Spring应用中集成定时任务变得简单。它允许开发者定义作业(Job)和触发器(Trigger),以执行周期性的任务,如数据同步...

    关于 spring 里的定时任务设置

    以下将详细讲解这两种方式。 1. 基于Java Timer API的定时任务: 在上述示例中,我们看到了如何使用Spring结合Java Timer API来创建定时任务。首先,自定义了一个`SayHelloTask`类,继承自`TimerTask`,并在`run()`...

    spring+quartz 精简版jar包 含log4j

    这个精简版的jar包组合,为开发者提供了一个轻量级但功能完备的环境,用于搭建基于Spring的应用,并使用Quartz进行定时任务的调度,同时利用Log4j进行日志记录。这样的配置避免了不必要的库冲突,提高了开发效率,...

    Spring整合Quartz分布式调度的示例代码

    3. Spring整合Quartz:Spring整合Quartz可以满足分布式调度系统的需求,提供了两种方式来配置Job和调度使用的触发器。 4. Job配置:Job配置是指配置Job的方式,包括MethodInvokingJobDetailFactoryBean和...

    spring定时任务配置详解.doc

    首先,Spring提供了两种定时任务的实现方式:`Spring Task` 和 `Quartz Scheduler`。在本例中,我们看到的是使用Quartz Scheduler的例子,这是一个功能强大的、开源的、可高度定制的定时任务框架,可以精确控制任务...

    Spring定时任务的几种实现

    关于任务调度的触发时机,通常有两种类型: - **间隔触发**:例如`SimpleTriggerBean`,每隔一段时间执行一次任务。 - **定时触发**:例如`CronTriggerBean`,根据cron表达式在特定时间执行任务。 对于任务类的设计...

    java网上爬虫和定时任务

    本篇文章将详细讲解如何利用Java实现网上爬虫以及结合Quartz实现定时任务。 首先,我们要了解什么是Java网上爬虫。简单来说,爬虫是一种自动获取网页内容的程序。在Java中,我们通常会使用HTTP客户端库,如Apache ...

    spring-boot-reference-guide-zh-中文, spring-boot参考指南

    - **任务调度**:使用Spring Task或Quartz进行定时任务。 - **国际ization (i18n)**:支持多语言环境。 9. **部署** - **Fat JAR**:打包所有依赖为单一可执行JAR,方便部署。 - **Docker**:将Spring Boot应用...

    job《定时任务》需要得jar包

    在非Spring项目中,Quartz提供了一个简单的方式来创建、管理和执行定时任务。使用Quartz,你需要在项目中引入相关的jar包,这正是“job《定时任务》需要得jar包”所指的。Quartz的jar包通常包括核心库quartz.jar,...

    spring 定时器

    Spring Task提供了两种主要的定时任务方式:基于`@Scheduled`注解的编程式定时任务和基于`java.util.concurrent.ScheduledExecutorService`的声明式定时任务。这里我们主要讨论`@Scheduled`注解的使用。 1. **使用@...

    spring 定时任务@Scheduled详解

    有两种主要的调用方式: 1. **基于固定延迟(fixedDelay)**: 当一个任务执行完成后,等待指定的延迟时间(单位为毫秒),然后再次执行。例如: ```java @Scheduled(fixedDelay = 5000) public void testTask() { ...

    Java定时操作数据库测试Demo

    本示例“Java定时操作数据库测试Demo”着重讲解如何利用Java的定时器(Timer)类来定期执行对数据库的操作,涉及到的数据库包括PostgreSQL、Oracle和MongoDB这三种主流的关系型和非关系型数据库。 首先,让我们了解...

    SpringMVC、Mybatis、Hibernate、Bootstrap、jQuery、HTML5、SpringSecurity、Lucene、Ehcache

    8. 数据持久层采用两种架构,提供灵活选择。 9. 使用最新的前端框架,保证了用户体验。 10. 详尽的日志记录,便于故障排查。 11. 遵循编码规范,代码整洁易读。 这些技术的应用不仅限于MIS、OA、ERP、CRM系统,也...

    JAVA培训一pptPPT学习教案.pptx

    6. **JAVA WEB开发**:这部分深入到JAVA在Web应用中的应用,涉及servlet、Spring框架、Spring MVC、MyBatis、事务管理、Quartz定时任务、前后端验证、POI处理Excel、Maven构建工具以及Jenkins持续集成等内容。...

    微服务架构专题-SpringBoot.pptx

    - **配置文件与日志**:SpringBoot支持properties和yml两种格式的配置文件,可以定义服务器端口、上下文路径、编码方式等。日志管理遵循一定的规范,如使用Logback或Log4j进行日志记录。 - **整合MyBatis与Druid*...

    基于阿里云的ddns实现

    5. **定时任务**:为了让程序定期运行,你可以将这段Java代码整合到一个可以配置定时任务的框架中,如Quartz或Spring Task,设置合适的间隔时间来检查IP并更新DNS记录。 通过以上步骤,你就能构建一个基于阿里云的...

Global site tag (gtag.js) - Google Analytics