Quartz入门实例14-让Quartz的Job使用Spring注入的Bean
来源:互联网 发布:软件外包保密协议 编辑:程序博客网 时间:2024/06/08 09:29
转自博客地址:http://blog.csdn.net/a67474506?viewmode=contents
- <!-- 由spring生成scheduler -->
- <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <!--<property name="jobFactory">
- <bean class="cn.zto.job.JobBeanJobFactory"/>
- </property>-->
- <property name="schedulerName" value="scheduler"/>
- <property name="configLocation" value="classpath:cn/zto/quartz/quartz.properties" />
- </bean>
由于将Scheduler交给spring生成, SchedulerFactoryBean有个jobFactory属性 而且jobFactory是实现SchedulerContextAware的类还要继承AdaptableJobFactory
jobFactorySet是个默认为false的boolean类型的
在Spirng-context-support jar包下org.springframework.scheduling.quartz包中有个SpringBeanJobFactory的类继承了AdaptableJobFactory实现AdaptableJobFactory
spring会默认使用这个给jobFactory
我们可以继承SpringBeanJobFactory重写他的createJobInstance方法
当Spring在加载配置文件时,如果配置文件中有Bean实现了ApplicationContextAware接口时
Spring会自动调用setApplicationContext方法
我们可以通过这个获取Spring上下文然后在创建Job时让Job自动注入到Spring容器中
JobBeanJobFactory.class
- package cn.zto.job;
- import org.quartz.spi.TriggerFiredBundle;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- import org.springframework.scheduling.quartz.SpringBeanJobFactory;
- public class JobBeanJobFactory extends SpringBeanJobFactory implements ApplicationContextAware {
- private ApplicationContext applicationContext;
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- this.applicationContext = applicationContext;
- }
- @Override
- protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
- Object jobInstance = super.createJobInstance(bundle);
- //把Job交给Spring来管理,这样Job就能使用由Spring产生的Bean了
- applicationContext.getAutowireCapableBeanFactory().autowireBean(jobInstance);
- return jobInstance;
- }
- }
xml配置
- <!-- 由spring生成scheduler -->
- <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="jobFactory">
- <bean class="cn.zto.job.JobBeanJobFactory"/>
- </property>
- <property name="schedulerName" value="scheduler"/>
- <property name="configLocation" value="classpath:cn/zto/quartz/quartz.properties" />
- </bean>
0 0
- Quartz入门实例14-让Quartz的Job使用Spring注入的Bean
- Quartz入门实例14-让Quartz的Job使用Spring注入的Bean
- quartz job 注入 spring 管理的 bean
- Quartz实现的job接口无法注入实例bean
- quartz的job中注入spring对象!
- Quartz的使用(解决quartz的job无法注入spring对象)
- Spring Quartz Job实例
- 解决quartz的job无法注入spring对象
- quartz 与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz入门实例Spring对Quartz的支持示例
- Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
- Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
- quartz如何获取spring注解注入的bean
- IntelliJ手动安装python与scala插件
- HDU
- jsp基础知识小结
- 多线程之间的通信
- ListView的常用优化
- Quartz入门实例14-让Quartz的Job使用Spring注入的Bean
- 代码推送到github,并配置密匙
- SQL Server索引、游标
- 从 Swift 的面向协议编程说开去
- linux进程调度算法:分时调度策略、FIFO调度策略、RR调度策略
- c#设计模式==工厂方法模式
- 小型BBS项目1--4月25号学习总结
- JavaScript中innerHTML、outerHTML、innerText、outerText的用法与区别认识
- LeetCode