Spring联姻Quartz实现作业调度

来源:互联网 发布:瑞士方阵知乎 编辑:程序博客网 时间:2024/05/16 12:02

这里用的是Spring-2.x和Quartz-1.x

里面涉及到的RecFileQuartz、MessageSendQuartz等类,都是普通的Java类

其中<targetMethod>属性值就是RecFileQuartz、MessageSendQuartz类中的方法

<bean id="recfileQuartz" class="com.ecpay.cus.quartz.RecFileQuartz"><property name="pbcDao" ref="pbcDao" /><property name="nauDao" ref="nauDao" /></bean>    <bean id="messageSendQuartz" class="com.ecpay.cus.quartz.MessageSendQuartz">    <property name="jfbManager" ref="jfbManager"/>    </bean><!-- Spring作业调度 --><!-- 0 0/10 9-23 * * ? : 每天09:00-23:00之间每10分钟触发一次 --><!-- 0 */2 * * * ?     : 02分钟触发一次 --><!-- 0 30 0 * * ?      : 每天00:30触发 --><!-- 0 0 1 * * ?       : 每天01:00触发 --><!-- 0 0 0 1 * ?       : 每月01号零点触发 --><!-- autoStartup='true':SchedulerFactoryBean在初始化后是否马上启动Scheduler,默认为true。若设置为false,则需手工启动Scheduler --><!-- concurrent='false':false为不允许任务并发执行,即第二个job将不会在第一个job完成之前开始执行.默认情况下,jobs是在并行的方式下运行的 --><bean id="quartzJobFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="genCustomizeRelationTrigger"/><ref bean="sendInfoTrigger"/></list></property><property name="autoStartup" value="true"/></bean><bean id="genCustomizeRelationTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="genCustomizeRelationJobDetail" /><property name="cronExpression" value="0 30 0 * * ?"/></bean><bean id="genCustomizeRelationJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="recfileQuartz" /><property name="targetMethod" value="genRecFileRelation" /><property name="concurrent" value="false" /></bean>    <bean id="sendInfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">    <property name="jobDetail" ref="sendInfoDetail"/>    <property name="cronExpression" value="0 */10 * * * ?" />    </bean>    <bean id="sendInfoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <property name="targetObject" ref="messageSendQuartz" />    <property name="targetMethod" value="executeSend" />    <property name="concurrent" value="false" />    </bean>

下面是MessageSendQuartz.java

package com.ecpay.cus.quartz;import com.ecpay.cus.service.JFBBusinessManager;/** * 信息推送 * @author 玄玉<http://blog.csdn.net/jadyer> */public class MessageSendQuartz {private JFBBusinessManager jfbManager;public void setJfbManager(JFBBusinessManager jfbManager) {this.jfbManager = jfbManager;}/** * 定时执行的方法 */public void executeSend() throws Exception {System.out.println("恭喜您:信息推送任务启动了");}}

下面是RecFileQuartz.java

package com.ecpay.cus.quartz;import org.springframework.transaction.annotation.Transactional;import com.ecpay.cus.dao.NotActiveUserDAO;import com.ecpay.cus.dao.PayBusinessCustomizeDAO;/** * 业务定制对账文件之作业调度类 * @author 玄玉<http://blog.csdn.net/jadyer> * @create May 4, 2012 12:50:28 PM */@Transactionalpublic class RecFileQuartz {private PayBusinessCustomizeDAO pbcDao;private NotActiveUserDAO nauDao;public void setNauDao(NotActiveUserDAO nauDao) {this.nauDao = nauDao;}public void setPbcDao(PayBusinessCustomizeDAO pbcDao) {this.pbcDao = pbcDao;}/** * 生成定制关系到数据库 */@Transactionalpublic void genRecFileRelation() {System.out.println("恭喜您:Spring定制调度执行了该方法,本行打印的日志就是该方法的第一行代码");}}

原创粉丝点击