Quartz2.x学习笔记(四):spring注入异常解决方法

来源:互联网 发布:淘宝怎么设置快递模板 编辑:程序博客网 时间:2024/04/29 14:53
在使用Quartz与spring整合时,有时需要在Job任务类里注入spring的bean。如下:

那么问题来了,当你启动项目时,会发现报了空指针异常:

查阅资料以及百度之后,终于找到一个解决办法:
spring-content jar包下自带了支持quartz的类,我们写个类继承它:
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;    }}
AdaptableJobFactory就是org.springframework.scheduling.quartz的类。
完成后。在spring的配置文件里加上:
<bean id="jobFactory" class="com.buoy.util.JobFactory"></bean>
注意class写的是上面的jobFactory所在的包路径
然后,在你配置job调度器的地方添加上属性:
 <property name="jobFactory" ref="jobFactory"></property>
这里我的如下:
(关于具体Quartz如何与spring整合,看前面的文章Quartz2.x学习笔记(三):Quartz2.x整合spring)
<!-- 3.定义调度器,并将Trigger注册到调度器中 -->    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">         <property name="jobFactory" ref="jobFactory"></property>        <property name="triggers">            <list>                <!-- <ref bean="simpleTrigger"/> -->                <ref bean="tirggerBuoy"/>            </list>        </property>        <property name="autoStartup" value="true" />    </bean>



0 0
原创粉丝点击