问题描述:
代码中 execute() 方法中, purchaseOrderService 空指针异常!
mapper或者dao层的也是如此;
详见下面代码
public class YgPurchaseOrderJob extends BaseAction implements Job {
private static Logger logger = Logger.getLogger(YgPurchaseOrderJob.class);
@Autowired
PurchaseOrderService purchaseOrderService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
try {
purchaseOrderService.purchaseOrderMethod(null,null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
解决方法:
1、编写Job工厂类:
public class MyJobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory autowireCapableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
//调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
autowireCapableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
2、在spring配置文件中,配置该bean
<bean id="myJobFactory" class="com.kingdee.quartz.MyJobFactory" />
3、在 scheduler.xml中,配置上该类——myJobFactory
即:
<property name="jobFactory" ref="myJobFactory" ></property>
详见下面代码:
<!-- =======================YG定时任务======================== -->
<bean id="purchaseOrder_job" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.kingdee.quartz.YgPurchaseOrderJob"></property>
</bean>
<!-- trigger -->
<bean id="purchaseOrder_cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="purchaseOrder_job"></property>
<property name="cronExpression">
<value>00 53 13 * * ? *</value>
</property>
</bean>
<!-- ==============================总配置============================ -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobFactory" ref="myJobFactory" ></property>
<!-- 添加触发器 -->
<property name="triggers">
<list>
<ref bean="purchaseOrder_cronTrigger"/>
</list>
</property>
</bean>
空指针消失