定时批处理作业是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-cloud-alibaba+dubbo+nacos+quartz以yml配置方式实现
各种企业应用几乎都会碰到任务调度的需求...对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业 务……,这样的例子俯拾皆是,不胜枚举。
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/368874
Spring Job 配置详解,Spring中Quartz的Cron配置说明,一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的
NULL 博文链接:https://elfasd.iteye.com/blog/1908001
也许大多数人听说 Quartz 是在学习或使用 Spring 的时 候,也就是 Spring 整合了 Quartz。而我也不例外,同样是在春天里得悉了这块石英。 当初公司一个项目中有些定时候任务,原来是用 JDK 的 TaskTimer 来实现的,...
Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考...springCon.quartz文件夹下 为对上诉博客理解透彻 结合spring看其配置的相关信息 就可以明白。
专业书 Spring Quatz 书-Quartz.Job.Scheduling.Framework.Building
spring boot集成quartz定时器,job支持spring的依赖注入
需要把app部署在多台服务器上,但只能让其中一台服务器的job执行,一台服务器挂了,另一台还能继续执行job,通过网上查找资料,都是java工程的方式,不好部署并测试,经过二天辛苦整合,终于整理成一个单spring web...
主要介绍了Spring quartz Job依赖注入使用详解的相关资料,Spring quartz Job不能依赖注入,Spring整合quartz Job任务不能注入Spring4整合quartz2.2.3中Job任务使用@Autowired不能注入,需要的朋友可以参考下
这个是spring 和 quartz的集成,quartz是单独的包,java线程的方式运行,利用自定义Jobfactory来解决spring注入service空指针的问题,简单实例执行main方法即可,很实用
spring和quartz的定时器的启动和停止例子
Spring3.2.4+Quartz2.2.0 实例 <!-- 启动触发器的配置开始 --> class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 启动触发器的配置结束 --> <!-- 调度的配置...
系统启动时自动从数据库中读取框架配置信息,job信息,调度信息注入到框架中。 本系统内嵌了jetty作为框架的web接口为本框架提供了动态控制功能。 接口以http+json形式提供服务。通过该接口可完成以下功能 1.立即...
大多数人听说 Quartz 是在学习或使用 Spring 的时候,也就是 Spring 整合了 Quartz。 把本人博客上零零散散,顺序错乱的各篇译章汇集成册,做成了一个 《Quartz Job Scheduling Framework 中文版.chm 》文件与各位...
基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查
demo中主要实现了Spring与Quartz的结合使用。其中哟两种配置方式,一种是任务pojo方式,另一种是集成Sprihng中的QuartzBean,实际上是实现了Job接口,具体的操作信息在相应的博客中有说明。
2.目前新的项目基本都是spring boot,如何通过约束、配置方式快速构建elastic job是一个必 要解决问题 ;所以博主自己开发了一个elastic job 的spring boot starter自动装载模块;目前 该starter已经在公司多个...