quartz定时任务与SpringMVC集成-自动注入管理bean

通过quartz实现定时任务的管理,由于quartz本身不支持的IOC自动注入管理bean。因此在于spring集成时,可通过自定义JobFactory的形式,通过继承AdaptableJobFactory类,将quartz对象的生命周期交给Spring IOC管理。

结构:

        JobFactory.java——实现自动注入

        DBWriter.java——实现定时任务

quartz-maven坐标

		<!-- quartz -->
		<dependency>
		    <groupId>org.quartz-scheduler</groupId>
		    <artifactId>quartz</artifactId>
		    <version>2.3.0</version>
		</dependency>

springmvc.xml配置

	<!--Quartz-->
    <!-- 集成方式:JobDetailFactoryBean,并且任务类需要继承QuartzJobBean-->
    <!-- 定义jobDetail -->
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <!-- durability 表示任务完成之后是否依然保留到数据库,默认false   -->
        <property name="durability" value="true" />  
        <!--     目标类  com.es.quartz.DBWriter.java-->
        <property name="jobClass" value="com.es.quartz.DBWriter"></property>
    </bean>

    <!-- 触发器是CornTrigger -->
     <bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
       <property name="jobDetail" ref="jobDetail"/>
       <!-- 每5分钟触发 -->
       <property name="cronExpression" value="0 0/5 * * * ?"/>
    </bean> 
    
    <!-- 定义核心调度器 -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
        <list>
        	<ref bean="cornTrigger"/>
        </list>
      </property>
      <!-- 定义使用自己的jobFactory -->
       <property name="jobFactory">
       		<bean class="com.es.quartz.JobFactory"/>
       </property>
    </bean>

JobFactory.java类

package com.es.quartz;

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;

/**
 * @author Anson<br>
 *	Copyright by EasyShare 2018<br>
 *  
 *  All right reserved<br>
 *
 *  Created on 2018年1月5日 上午2:01:02<br>
 *  向quartz中注入由spring管理的service<br>
 */
public class JobFactory extends AdaptableJobFactory {

	@Autowired
	private AutowireCapableBeanFactory autowireCapableBeanFactory;
	
	public JobFactory() {
		
	}
	
	@Override
	protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
		//调用父类
		Object instance = super.createJobInstance(bundle);
		//自动注入
		autowireCapableBeanFactory.autowireBean(instance);
		return instance;
	}
}

DBWriter.java类

package com.es.quartz;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * @author Anson
 *	Copyright by EasyShare 2017
 *  
 *  All right reserved
 *
 *  Created on 2017年6月27日 下午10:34:57
 *  用户表的数据写入
 */
public class DBWriter extends QuartzJobBean {
	
	
	public DBWriter() {
		//显示指定默认构造函数
	}
	
	@Override
	protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
		//保存或更新信息
		//插入所需定时执行的方法
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值