Quartz创建Job无法注入接口实例的问题

在使用Quartz的时候,遇到了一个问题困扰了好久

就是在执行Job的时候,发现父类封装的一些Dao方法无法使用,断点一执行到相应位置就结束了,并且不报任何错误

也算范低级错误了,后来才想到,Exception没有捕获的就不报任何错误
后来写了try/catch,发现原来是要注入的Dao,获取的对象都是空

才明白是没有注入接口实现

可是自己明明在Spring中定义了Job的Bean

----------------------
后来明白,在创建Job时,代码如下
JobDetail initJob = new JobDetail("initJob", "InitGroup",  
InitJob.class);

这样写其实是通过反射的方式创建的Job类,并不是通过Spring来创建的,所以他不会注入父类中封装的Dao

具体的方法可以如下
		<!--定时器任务配置(开始)-->	 
<!--配置JOB-->
<!--方法一-->
<bean id="initJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="initJob" />
<property name="targetMethod" value="executeA" />
<!-- <property name="arguments" /> -->
</bean>
<!--方法二-->
<!-- <bean name="initJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> -->
<!-- <property name="jobClass" value="com.xxx.services.InitJob" /> -->
<!-- </bean> -->

第一种方法就是通过Spring中Quartz的Factory工厂来创建Job的,这样就可以通过Spring注入接口实例了

第二种则是和使用Java代码的方式相同,指定class类,实际上还是Quartz内部通过反射来实现,并没有使用Spring注入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值