`

在spring中使用Quartz配置job的方式

阅读更多

定时批处理作业是J2EE企业应用里很重要的一环,用来在晚间进行财务挂账,数据转存,数据处理分析等等操作。

 而在Spring里,已经很好的集成了Quartz,简单到像配cron一样,在xml文件里面配一下时间就可以自动执行,不需要写一行代码。

Spring对Quartz大刀阔斧的简化堪称范例,下面我们来看下如何实现

在网上比较流行的一段配置:

<?xmlversion="1.0"encoding="UTF-8"?>  
 <beansxmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:aop="http://www.springframework.org/schema/aop" 
  xmlns:tx="http://www.springframework.org/schema/tx" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  http://www.springframework.org/schema/aop  
  http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  http://www.springframework.org/schema/tx  
  http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"  
  default-autowire="no"default-lazy-init="false">  
 
  <beanid="someData"class="com.spring.job.JobData"/>  
 
   <beanid="jobDetailBean" 
      class="org.springframework.scheduling.quartz.JobDetailBean">  
     <propertyname="jobClass" 
       value="com.spring.job.DemoJob"/>  
     <propertyname="jobDataAsMap">  
       <map>  
         <entrykey="jobData"value-ref="someData"/>  
       </map>  
     </property>  
   </bean>  
 
<beanid="jobDetailBean2" 
      class="org.springframework.scheduling.quartz.JobDetailBean">  
     <propertyname="jobClass" 
       value="com.spring.job.DemoJob2"/>  
     <propertyname="jobDataAsMap">  
       <map>  
         <entrykey="jobData"value-ref="someData"/>  
       </map>  
     </property>  
   </bean>  
 
   <beanid="simpleTriggerBean" 
      class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
     <propertyname="jobDetail"ref="jobDetailBean"/>  
     <propertyname="repeatInterval"value="500000"/>  
     <propertyname="startDelay"value="10000"/>  
   </bean>  
 
     <beanid="simpleTriggerBean2" 
      class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
     <propertyname="jobDetail"ref="jobDetailBean2"/>  
     <propertyname="repeatInterval"value="100000"/>  
     <propertyname="startDelay"value="10000"/>  
   </bean>  
 
   <beanid="schedulerFactoryBean" 
      class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
     <propertyname="triggers">  
       <list>  
         <refbean="simpleTriggerBean"/>  
         <refbean="simpleTriggerBean2"/>  
       </list>  
     </property>  
   </bean>  
 
 </beans> 

另外一个配置的例子,这个例子是有注释的:

1.<?xml version="1.0" encoding="UTF-8"?>  
2.<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
3.<beans>  
4.<!--起动Bean-->  
5. <bean id="z" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
6.    <property name="triggers">  
7.        <list>  
8.      
9.            <ref bean="cronReportTrigger"/>  
10.        </list>  
11.    </property>  
12. </bean>   
13.<!--实际的工作Bean-->  
14.  <bean id="courseService" class="com.spring.helloworld.CourseService"></bean>  
15.<!--jobBean用于设定启动时运用的Bean与方法-->  
16. <bean id="scheduledReportJobDetail"    
17.class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
18.     <property name="targetObject">  
19.        <ref  bean="courseService"/>    
20.     </property>  
21.     <property name="targetMethod">  
22.         <value>sendCourseEnrollmentReport</value>  
23.     </property>  
24. </bean>  
25.<!--定时器设定起动频率&启动时间我设的是每5秒起动一次 (0 0  4 * * ?每日四点起动....)-->  
26. <bean id="cronReportTrigger"   
27.class="org.springframework.scheduling.quartz.CronTriggerBean">  
28. <property  name="jobDetail"><ref bean="scheduledReportJobDetail"/>  
29. </property>  
30. <property name="cronExpression"><value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>    
31.</property>  
32. </bean>  
33.      
34.</beans> 
后面的这个配置就觉得很简单,直接在创建一个接口和实现类就可以了。甚至不必去创建,用原来的相信也应该可以的。


附:cronExpression配置说明


字段   允许值   允许的特殊字符
秒    0-59    , - * /
分    0-59    , - * /
小时    0-23    , - * /
日期    1-31    , - * ? / L W C
月份    1-12 或者 JAN-DEC    , - * /
星期    1-7 或者 SUN-SAT    , - * ? / L C #
年(可选)    留空, 1970-2099    , - * /

分享到:
评论

相关推荐

    关于spring中quartz的配置

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

    Spring中Quartz的配置

    在Spring中使用Quartz进行任务调度时,首先需要创建一个被调度的类。示例代码如下: ```java package com.kay.quartz; public class QuartzJob { public void work() { System.out.println("Quartz的任务调度!...

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

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

    spring2与quartz在Web整合

    3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...

    Spring Quartz如何动态配置时间

    在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...

    Quartz2.2.1基于Spring注解方式配置Quartz

    本文将详细介绍如何在Spring环境中使用注解方式配置Quartz。 1. **引入依赖** 在项目中,你需要引入Quartz和Spring的相应依赖。在Maven的pom.xml文件中,添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler...

    利用spring的ApplicationContext在程序中唤醒quartz的job

    本篇文章将探讨如何结合Spring的ApplicationContext和Quartz,实现在程序中动态唤醒和管理Quartz的Job。 首先,`AppService.java`很可能包含了一个服务类,该类可能负责与Quartz相关的业务逻辑,例如创建、更新或...

    SpringQuartz的使用文档

    Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...

    转:spring多个定时任务quartz配置

    5. **配置Spring**:在Spring的配置文件中,我们需要声明`SchedulerFactoryBean`来初始化Quartz调度器,并定义`@Component`或`&lt;bean&gt;`来管理Job和Trigger。 ```xml &lt;bean id="schedulerFactoryBean" class="org....

    浅谈Spring中的Quartz配置

    为此,我们可以利用Spring的`SchedulerAwareJobFactory`和`QuartzJobBean`,这样Spring的依赖注入和AOP特性就能在Job中发挥作用。 最后,lib文件夹通常包含项目所需的库文件,对于Quartz来说,它可能包含了Quartz库...

    spring集成quartz集群配置

    在IT行业中,Spring框架是Java应用开发中的基石,而Quartz则是广泛使用的任务调度库,尤其适用于企业级应用。本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。...

    Spring3.2.3+Quartz2.2 整合配置

    在上述配置中,`jobExecutionService`是自定义的Job执行类,它需要实现`org.quartz.Job`接口或者使用Spring的`MethodInvokingJobDetailFactoryBean`来调用特定方法。`CronTriggerFactoryBean`用于设置触发器的执行...

    quartz和spring-quartz

    而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring应用中使用Quartz变得更加方便。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和Calendar(日历)。Job是实际要执行的任务,Trigger定义了Job...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    spring多个定时任务quartz配置

    2. **配置Spring**:在Spring的配置文件(如applicationContext.xml)中,我们需要配置一个SchedulerFactoryBean,这是Spring管理Quartz Scheduler的主要方式。示例配置如下: ```xml ...

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    4. **Scheduler 配置**:在 Spring 配置中,可以使用 `@Configuration` 类来定义 `SchedulerFactoryBean`,并设置相关的属性。 5. **监听器**:Quartz 2.x 提供了更丰富的监听器功能,可以在 Spring 配置中添加 ...

    spring之定时任务实现(spring-task和quartz等不同方式)

    配置Quartz通常需要在Spring配置文件中声明`SchedulerFactoryBean`,并设置相关的bean。例如: ```xml &lt;bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;!-- 这里...

    在spring中使用quartz

    在Spring应用中集成Quartz,首先需要在`applicationContext.xml`或对应的配置文件中声明Quartz的相关bean。这包括SchedulerFactoryBean,它负责创建和管理Scheduler实例,以及JobDetail和Trigger的定义。 ```xml ...

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

    通过以上步骤,你就可以在Spring MVC项目中使用Spring内置的定时器或Quartz来执行定时任务了。两者各有优劣,Spring内置定时器简单易用,适合轻量级的定时需求;而Quartz功能强大,适用于复杂的定时场景,但配置和...

    spring3配置quartz定时任务

    要在Spring 3中使用Quartz,首先需要在项目中添加Quartz库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;version&gt;2.3.2 ``` ...

Global site tag (gtag.js) - Google Analytics