我是
靠谱客的博主
激昂热狗,最近开发中收集的这篇文章主要介绍
解决quartz的job无法注入spring对象,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。
自定义一个类:
- public class JobFactory extends AdaptableJobFactory {
-
- @Autowired
- private AutowireCapableBeanFactory capableBeanFactory;
-
- @Override
- protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
-
- Object jobInstance = super.createJobInstance(bundle);
-
- capableBeanFactory.autowireBean(jobInstance);
- return jobInstance;
- }
-
- }
然后在spring中配置:
-
- <bean id="jobFactory" class="com.xx.job.JobFactory"></bean>
- <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="jobFactory" ref="jobFactory"></property>
- </bean>
这时候,我们在定义类继承job的时候,就可以使用autowired注入service对象了:
- public class Test1Job implements Job {
- public final Logger log = Logger.getLogger(this.getClass());
-
- @Autowired
- private JobTaskService jobTaskService;
-
- public void execute(JobExecutionContext context) throws JobExecutionException {
-
- Date nextProcessTime = context.getNextFireTime();
- ScheduleJob job = (ScheduleJob) context.getJobDetail().getJobDataMap().get("scheduleJob");
- job.setNextProcessTime(nextProcessTime);
- jobTaskService.updateTaskByJobName(job);
-
-
- System.out.println("22222222222222222222:");
- }
- }
最后
以上就是激昂热狗为你收集整理的解决quartz的job无法注入spring对象的全部内容,希望文章能够帮你解决解决quartz的job无法注入spring对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复