Spring 整合quartz进行定时任务,如果直接在job内注入Bean时,报空指针异常。
一、重写JobFactory
@Component
public class JobFactory extends SpringBeanJobFactory {
@Autowired
private AutowireCapableBeanFactory beanFactory;
/**
* 重写 覆盖了super的createJobInstance方法
*
* @param bundle
* @return
* @throws Exception
*/
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object jobInstance = super.createJobInstance(bundle);
beanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
二、调度器中加入
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
<property name="jobFactory" ref="jobFactory"/>
</bean>
在 job 任务中注入之后可解决空指针问题。