场景:在ContextLoaderListener子类中加载job,为JobFactory的实现类声明@Component后,在ContextLoaderListener子类中为scheduler设置JobFactory。(主要解决的问题:在spring与quartz调用job时,job中无法读取注解类,实现注入)

步骤一:

ContextLoaderListener子类中contextInitialized方法中代码如下:

super.contextInitialized(event);

applicationContext = super.getCurrentWebApplicationContext();

        scheduler = applicationContext.getBean(Scheduler.class);

try {

  scheduler.setJobFactory(applicationContext.getBean(JobFactory.class));

 } catch (BeansException e1) {

  logger.error(e1.getMessage(),e1);

 } catch (SchedulerException e1) {

  logger.error(e1.getMessage(),e1);

 }

步骤二: 声明JobFactory子类,和job中的服务类

package com.river.job.listener;

import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Component; @Component
public class MyJobFactory extends AdaptableJobFactory {
// 这个对象Spring会帮我们自动注入进来,也属于Spring技术范畴.
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
protected Object createJobInstance(TriggerFiredBundle bundle)
throws Exception {
// 调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
// 进行注入,这属于Spring的技术,不清楚的可以查看Spring的API.
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
package com.river.service1;

import org.springframework.stereotype.Service;

@Service
public class TestBean { }

步骤三:在spring-job.xml中加入要注入的包扫描

<context:component-scan base-package="com.river.job.listener" />
<context:component-scan base-package="com.river.service1" />

现在就可以测试一下,在job中测试结果如下:

river_Worker-2===============com.river.job.HiJobImp@596b2557  2015-09-07 18:41:30
com.river.service1.TestBean@7efd6242

可见这里拿到TestBean的对象了。

最新文章

  1. Socket通信综合示例
  2. WPF 后台读取样式文件
  3. 使用UG UISTYLER 窗体编辑器,创建对话框 part 2
  4. 纯CSS实现圆形进度条
  5. 【wikioi】1553 互斥的数(hash+set)
  6. UVALive 6145 Version Controlled IDE(可持久化treap、rope)
  7. Java Dns Cache Manipulator
  8. acdream 1412 2-3Trees (组合+DP)
  9. vi 命令 使用方法
  10. BOM元素之window对象
  11. 统计学习方法——CART, Bagging, Random Forest, Boosting
  12. windy数(数位DP)
  13. CSS3 动画及过渡详解
  14. java-框架-索引
  15. C# 计算位置居中
  16. OpenCV使用BGR而非RGB格式
  17. mysql 案例~ 分区表
  18. CheckTimeWait.bat实现windows下的TimeWait检查
  19. 统计学习方法c++实现之六 支持向量机(SVM)及SMO算法
  20. 【RF库Collections测试】Remove Duplicates

热门文章

  1. Excel日期处理
  2. ORACLE用户永不被锁
  3. Java.sql.SQLException: 无效的列类型: 1111
  4. C# split分割多个字符
  5. LuoguP1226 【模板】快速幂||取余运算
  6. Codeforces Beta Round#2
  7. MongoDB的文档、集合、数据库(二)
  8. 无法访问部署在linux上的Tomcat服务器解决方案
  9. Golang之hello,beego
  10. shell 脚本 测试webApp