使用Spring+Quartz实现定时任务

来源:互联网 发布:广州诗悦网络怎么样 编辑:程序博客网 时间:2024/06/15 20:19

一、所需jar包

1、若quartz-all.jar版本为2.x,则spring版本必须为3.1以上。2、若spring版本为3.0之前,则只需spring.jar、quartz-all-1.x.jar、jta.jar、commons-collections-3.1.jar3、若spring版本为3.0之后,且quartz-all.jar版本为1.x,则springjar文件需要以下jar包:spring-core-3.0.5.RELEASE.jar spring-beans-3.0.5.RELEASE.jar spring-context-3.0.5.RELEASE.jar spring-context-support-3.0.5.RELEASE.jar spring-asm-3.0.5.RELEASE.jar spring-expression-3.0.5.RELEASE.jar spring.transaction-3.0.5.RELEASE.jar spring-web-3.0.5.RELEASE.jar

二、Spring配置:

//普通bean<bean id="testService" class="com.test.core.service.testService"/>//定义调用对象和调用对象的方法<bean id="testTask"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- 调用的类 -->        <property name="targetObject" ref="testService"/>        <!-- 调用类中的方法 -->        <property name="targetMethod" value="testStart"/></bean>//设置触发时间<bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">         <!-- 定时任务执行bean -->        <property name="jobDetail" ref="testTask" />         <!-- 调度工厂实例化后,经过0秒开始执行调度 -->         <property name="startDelay" value="0" />         <!-- 每隔一分钟调度一次 -->         <property name="repeatInterval" value="60000" /> </bean>//定时任务总管理bean,注意bean的顺序,不可颠倒<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         <property name="triggers">             <list>                 <ref bean="testTrigger" />             </list>        </property> </bean>

三、配置作业调度的触发方式

1、Quartz的作业触发器有两种,分别是:

org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling.quartz.CronTriggerBean 

第一种SimpleTriggerBean,只支持按照一定频度调用任务,例如每隔30分钟运行一次。
配置方式如下:

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">       <property name="jobDetail" ref="job1" />       <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->       <property name="repeatInterval" value="2000" /><!-- 每2秒调度一次 -->  </bean>

第二种CronTriggerBean,支持到指定时间运行一次,如每天12:00运行一次等。
配置方式如下:

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">       <property name="jobDetail" ref="job1" />       <!—每天12:00运行一次 -->       <property name="cronExpression" value="0 0 12 * * ?" />  </bean>
- 区间 * 通配符  ? 你不想设置那个字段

CRON表达式 含义

"0 0 12 * * ?"    每天中午十二点触发 "0 15 10 ? * *"    每天早上10:15触发 "0 15 10 * * ?"    每天早上10:15触发 "0 15 10 * * ? *"    每天早上10:15触发 "0 * 14 * * ?"    每天从下午2点开始到2点59分每分钟一次触发 "0 0/5 14 * * ?"    每天从下午2点开始到2:55分结束每5分钟一次触发 "0 0/5 14,18 * * ?"    每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发 "0 0-5 14 * * ?"    每天14:00至14:05每分钟一次触发 "0 10,44 14 ? 3 WED"    三月的每周三的14:10和14:44触发 "0 15 10 ? * MON-FRI"    每个周一、周二、周三、周四、周五的10:15触发
原创粉丝点击