解决quartz的job无法注入spring对象
2016-12-12 21:58
477 查看
一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。
自定义一个类:
[java] view
plain copy
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中配置:
[html] view
plain copy
<!-- 定时任务的factorybean,配置其他config -->
<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对象了:
[java] view
plain copy
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:");
}
}
自定义一个类:
[java] view
plain copy
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中配置:
[html] view
plain copy
<!-- 定时任务的factorybean,配置其他config -->
<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对象了:
[java] view
plain copy
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的使用(解决quartz的job无法注入spring对象)
- 解决Spring boot使用Quartz时Job中无法注入Bean 空指针异常问题
- quartz的job类无法保留本身通过spring注入的属性问题
- Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
- spring3.1集成quartz时,spring依赖注入无法注入到quartz的job中的处理方法
- quartz的job中注入spring对象!
- 解决Spring+Quartz无法自动注入bean问题
- 解决Spring+Quartz无法自动注入bean问题
- 解决Spring+Quartz无法自动注入bean问题
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring集成 Job如何自动注入Spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- 单独使用Quartz 2.1.7 时Job属性Spring无法注入
- Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- 解决Spring+Quartz无法自动注入bean问题
- Quartz与Spring集成 Job如何自动注入Spring容器托管的对象
- quartz 与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象
- Spring+Hibernate+Struts2整合Quartz, JOB中无法使用Spring注入