利用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
分享到:
相关推荐
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
首先,Spring提供了两种主要的定时任务实现:`Spring Task`(也称为Spring自己的任务调度器)和`Quartz Scheduler`。`Spring Task`相对简单,适用于轻量级的定时需求,而`Quartz`则功能强大,适合复杂的调度场景。 ...
本文将详细讲解两种通过Spring实现定时任务的方法:Spring的`TimerTask`和`Spring Batch`的`Tasklet`。我们将涵盖这两种方法的基本原理、配置以及使用源码,确保你能全面理解如何在实际项目中应用。 ### 一、Spring...
Spring Quartz是一个强大的任务调度框架,基于Quartz Scheduler进行了Spring化的封装,使得在Spring应用中集成定时任务变得简单。它允许开发者定义作业(Job)和触发器(Trigger),以执行周期性的任务,如数据同步...
以下将详细讲解这两种方式。 1. 基于Java Timer API的定时任务: 在上述示例中,我们看到了如何使用Spring结合Java Timer API来创建定时任务。首先,自定义了一个`SayHelloTask`类,继承自`TimerTask`,并在`run()`...
这个精简版的jar包组合,为开发者提供了一个轻量级但功能完备的环境,用于搭建基于Spring的应用,并使用Quartz进行定时任务的调度,同时利用Log4j进行日志记录。这样的配置避免了不必要的库冲突,提高了开发效率,...
3. Spring整合Quartz:Spring整合Quartz可以满足分布式调度系统的需求,提供了两种方式来配置Job和调度使用的触发器。 4. Job配置:Job配置是指配置Job的方式,包括MethodInvokingJobDetailFactoryBean和...
首先,Spring提供了两种定时任务的实现方式:`Spring Task` 和 `Quartz Scheduler`。在本例中,我们看到的是使用Quartz Scheduler的例子,这是一个功能强大的、开源的、可高度定制的定时任务框架,可以精确控制任务...
关于任务调度的触发时机,通常有两种类型: - **间隔触发**:例如`SimpleTriggerBean`,每隔一段时间执行一次任务。 - **定时触发**:例如`CronTriggerBean`,根据cron表达式在特定时间执行任务。 对于任务类的设计...
本篇文章将详细讲解如何利用Java实现网上爬虫以及结合Quartz实现定时任务。 首先,我们要了解什么是Java网上爬虫。简单来说,爬虫是一种自动获取网页内容的程序。在Java中,我们通常会使用HTTP客户端库,如Apache ...
- **任务调度**:使用Spring Task或Quartz进行定时任务。 - **国际ization (i18n)**:支持多语言环境。 9. **部署** - **Fat JAR**:打包所有依赖为单一可执行JAR,方便部署。 - **Docker**:将Spring Boot应用...
在非Spring项目中,Quartz提供了一个简单的方式来创建、管理和执行定时任务。使用Quartz,你需要在项目中引入相关的jar包,这正是“job《定时任务》需要得jar包”所指的。Quartz的jar包通常包括核心库quartz.jar,...
Spring Task提供了两种主要的定时任务方式:基于`@Scheduled`注解的编程式定时任务和基于`java.util.concurrent.ScheduledExecutorService`的声明式定时任务。这里我们主要讨论`@Scheduled`注解的使用。 1. **使用@...
有两种主要的调用方式: 1. **基于固定延迟(fixedDelay)**: 当一个任务执行完成后,等待指定的延迟时间(单位为毫秒),然后再次执行。例如: ```java @Scheduled(fixedDelay = 5000) public void testTask() { ...
本示例“Java定时操作数据库测试Demo”着重讲解如何利用Java的定时器(Timer)类来定期执行对数据库的操作,涉及到的数据库包括PostgreSQL、Oracle和MongoDB这三种主流的关系型和非关系型数据库。 首先,让我们了解...
8. 数据持久层采用两种架构,提供灵活选择。 9. 使用最新的前端框架,保证了用户体验。 10. 详尽的日志记录,便于故障排查。 11. 遵循编码规范,代码整洁易读。 这些技术的应用不仅限于MIS、OA、ERP、CRM系统,也...
6. **JAVA WEB开发**:这部分深入到JAVA在Web应用中的应用,涉及servlet、Spring框架、Spring MVC、MyBatis、事务管理、Quartz定时任务、前后端验证、POI处理Excel、Maven构建工具以及Jenkins持续集成等内容。...
- **配置文件与日志**:SpringBoot支持properties和yml两种格式的配置文件,可以定义服务器端口、上下文路径、编码方式等。日志管理遵循一定的规范,如使用Logback或Log4j进行日志记录。 - **整合MyBatis与Druid*...
5. **定时任务**:为了让程序定期运行,你可以将这段Java代码整合到一个可以配置定时任务的框架中,如Quartz或Spring Task,设置合适的间隔时间来检查IP并更新DNS记录。 通过以上步骤,你就能构建一个基于阿里云的...