Quartz的job中注入的services接口为空的解决办法

时间:2023-03-09 20:42:59
Quartz的job中注入的services接口为空的解决办法

自己重新定义一个类继承AdaptableJobFactory类

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;
}
}

在sprig配置文件中配置

    <bean id="jobFactory" class="com.ka.common.quartz.JobFactory"></bean>

    <!-- 调度器 -->
<bean name="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobFactory" ref="jobFactory"></property>
<!-- 通过applicationContextSchedulerContextKey属性配置spring上下文 -->
<property name="applicationContextSchedulerContextKey">
<value>applicationContext</value>
</property>
</bean>

在job中使用

public class QuartzTaskMeetingNoticeHandler implements Job {
protected Logger log = LoggerFactory.getLogger(getClass()); @Resource(name = "AdminJournalServices")
protected IAdminJournalServices mIAdminJournalServices;
@Resource(name = "AdminAccountServices")
protected IAdminAccountServices mIAdminAccountServices; @Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.debug("-------------------获取调度任务 start--------------------");
}
}

引用参考:http://blog.****.net/irabbit0708/article/details/52023437

相关文章