`

在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 Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...

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

    spring-cloud-alibaba+dubbo+nacos+quartz以yml配置方式实现

    SpringQuartz的使用文档

    各种企业应用几乎都会碰到任务调度的需求...对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业 务……,这样的例子俯拾皆是,不胜枚举。

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

    NULL 博文链接:https://dolphin-ygj.iteye.com/blog/368874

    Spring Job 配置详解

    Spring Job 配置详解,Spring中Quartz的Cron配置说明,一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的

    Spring3.2.3+Quartz2.2 整合配置

    NULL 博文链接:https://elfasd.iteye.com/blog/1908001

    Quartz_Job+Scheduling_Framework

    也许大多数人听说 Quartz 是在学习或使用 Spring 的时 候,也就是 Spring 整合了 Quartz。而我也不例外,同样是在春天里得悉了这块石英。 当初公司一个项目中有些定时候任务,原来是用 JDK 的 TaskTimer 来实现的,...

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。

    Spring Quatz 书-Quartz.Job.Scheduling.Framework.Building

    专业书 Spring Quatz 书-Quartz.Job.Scheduling.Framework.Building

    spring boot集成quartz定时器

    spring boot集成quartz定时器,job支持spring的依赖注入

    Spring Quartz Job 集群 终极解决方案

    需要把app部署在多台服务器上,但只能让其中一台服务器的job执行,一台服务器挂了,另一台还能继续执行job,通过网上查找资料,都是java工程的方式,不好部署并测试,经过二天辛苦整合,终于整理成一个单spring web...

    Spring quartz Job依赖注入使用详解

    主要介绍了Spring quartz Job依赖注入使用详解的相关资料,Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入,需要的朋友可以参考下

    spring和quartz的集成(java线程的方式运行)

    这个是spring 和 quartz的集成,quartz是单独的包,java线程的方式运行,利用自定义Jobfactory来解决spring注入service空指针的问题,简单实例执行main方法即可,很实用

    spring和quartz的定时器的启动和停止例子

    spring和quartz的定时器的启动和停止例子

    Spring3.2.4+Quartz2.2.0 Demo

    Spring3.2.4+Quartz2.2.0 实例 &lt;!-- 启动触发器的配置开始 --&gt; class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;!-- 启动触发器的配置结束 --&gt; &lt;!-- 调度的配置...

    springbatch_嵌入式jetty_动态控制的quartz

    系统启动时自动从数据库中读取框架配置信息,job信息,调度信息注入到框架中。 本系统内嵌了jetty作为框架的web接口为本框架提供了动态控制功能。 接口以http+json形式提供服务。通过该接口可完成以下功能 1.立即...

    Quartz Job Scheduling Framework 中文版 V1.0.0.chm

    大多数人听说 Quartz 是在学习或使用 Spring 的时候,也就是 Spring 整合了 Quartz。 把本人博客上零零散散,顺序错乱的各篇译章汇集成册,做成了一个 《Quartz Job Scheduling Framework 中文版.chm 》文件与各位...

    基于Spring的Quartz动态定时任务增删改查

    基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查

    Spring配置Quartz

    demo中主要实现了Spring与Quartz的结合使用。其中哟两种配置方式,一种是任务pojo方式,另一种是集成Sprihng中的QuartzBean,实际上是实现了Job接口,具体的操作信息在相应的博客中有说明。

    分布式调度任务架构elastic job的spring-boot-starter自动装载模块

    2.目前新的项目基本都是spring boot,如何通过约束、配置方式快速构建elastic job是一个必 要解决问题 ;所以博主自己开发了一个elastic job 的spring boot starter自动装载模块;目前 该starter已经在公司多个...

Global site tag (gtag.js) - Google Analytics