Spring-quartz整合
来源:互联网 发布:宏晶单片机 编辑:程序博客网 时间:2024/05/29 15:55
版本:
- Spring版本:4.0.3
- Quartz版本:2.2.1
声明:
Quartz基础使用请参考“Quartz”一文,这里只记录并总结最新(2015年2月12日)、最全的Spring-quartz整合方案;因近期项目中有一个“接水”需求,而且需要注入service中的一些方法,之前也单独使用并记录过Quartz的基础使用方法,网络上相关文章的泛滥、版本老旧等问题普遍存在,所以在此做一个Spring整合Quartz的全面总结并拓展Quartz一文。
准备:
- Spring基础jar
- Quartz基础jar
- Spring-context-support-4.0.3.RELEASE(重要)
<!--自动扫包 --><context:component-scan base-package="*"/><!--启动AspectJ支持 --><aop:aspectj-autoproxy></aop:aspectj-autoproxy>
第一种实现:
- Java类:
SimpleJob就是普通java类。
- applicationContext.xml配置:
<!-- spring整合quartz--><!-- jobDetail --><bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"<span style="white-space:pre"></span>p:targetObject-ref="simpleJob" p:targetMethod="executeInternal" p:concurrent="false"/><!-- trigger --><bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"p:jobDetail-ref="simpleJobDetail" p:startDelay="0" p:repeatInterval="1000"></bean>
第二种实现:
- Java类:
CronJob继承QuartzJobBean类并重写了executeInternal(JobExecutionContext context)方法。
- applicationContext.xml配置:
将job托管给spring:<bean name="cronJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" p:jobClass="crazyz.itfriday.utils.quartz.CronJob" p:durability="true"><property name="jobDataAsMap"><map><entry key="refresh" value="60"/></map></property></bean><!-- trigger --><bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"p:jobDetail-ref="cronJobDetail" p:cronExpression="0 0/1 * * * ? *" />
- Java类:
要实现spring注入需要修改jobFactory,因为job是在jobFactory中创建无法托管给spring所以需要复写相关创建方法:
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;import org.springframework.stereotype.Component;@Component(value="jobFactoryWrapper")public class JobFactoryWrapper extends AdaptableJobFactory {@Autowiredprivate AutowireCapableBeanFactory capableBeanFactory; protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {//调用父类的方法Object jobInstance = super.createJobInstance(bundle);//进行注入,这属于Spring的技术,不清楚的可以查看Spring的API. capableBeanFactory.autowireBean(jobInstance); return jobInstance;}}
- applicationContext.xml配置(红色):
<!-- scheduler --><bean id="springQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" p:jobFactory-ref="jobFactoryWrapper" autowire="no" lazy-init="true"><property name="triggers"><list><ref bean="simpleTrigger"/><ref bean="cronTrigger"/></list></property></bean>
github地址:
https://github.com/710270532/spring-quartz
0 0
- Spring-----Spring整合Quartz
- spring整合quartz
- spring整合quartz
- spring整合quartz
- Spring整合quartz配置
- Spring 整合quartz
- Spring整合quartz
- Spring整合Quartz示例
- spring整合quartz
- spring quartz框架整合
- spring跟QuartZ整合
- Spring-quartz整合
- Quartz 整合Spring 小试牛刀
- spring整合quartz
- spring整合quartz
- Spring+Quartz整合
- Spring整合Quartz
- spring和quartz整合
- MyEclipse打开struts-config xml文件 图形化不显示
- Uri 中文乱码问题
- for循环标签
- Linux 学习笔记---访问控制列表
- sourceInsight如何去除注释中文间的空格
- Spring-quartz整合
- android debug工具集(挺全的)
- win7下xampp配置memcache完整经历,没有坑
- Android----关于基础控件属性窗口无法手动设置的问题
- 第二章---SpringMVC----Spring入门
- python String Study log
- MyEclipse使用教程:使用仪表板快速启动项目
- Study JSP《自定义标签库》
- absolute绝对定位的非绝对定位用法