定时任务 中的job中注入的service接口 为空 解决方法
2016-07-25 14:35
381 查看
一般情况下,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:");
}
}
相关文章推荐
- document.body.scrollTop用法
- json
- hdu2063 过山车--最大匹配数 & 匈牙利
- OC和Swift的桥接
- JS传递参数
- Material Design系列,自定义Behavior之上滑显示返回顶部按钮
- 无法启动计算机上的服务W3SVC
- js时间基本操作
- 伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息
- 5-26 Windows消息队列
- id Software公司介绍
- hdu 4301 Divide Chocolate (dp )
- 安卓逆向学习第一天
- Shader Scale
- java中保留几位小数
- 解决Url带中文参数乱码问题
- Android表情的处理方案记录
- python2 和python3共存下问题
- 数据仓库的一些基本知识
- MySQL 5.6 (Win7 64位)下载、安装与配置图文教程