在使用Quartz的时候遇到一个问题:

原因:

当前使用的是Spring-Quartz,xml配置,但是Job太多,导致很多的xml配置

目的:

不使用spring-quartz的配置,单独使用quartz,因为Job太多,配置文件太臃肿,而且尽量不去更改现有的Job代码,因为Job太多,更改难免会出现问题。

因为现有的Job中有很多Spring的属性依赖,不打算放到JobExecutionContext中,还要再取出来

问题:

原来的Job是Spring自动扫描的,属性可以自动注入,现在换成使用单独的Quartz,属性不能注入了(具体原因没有细看)

解决方法:

方法1:

网上查找到的方法是 一个类继承 AdaptableJobFactory

当前版本的Quartz 2.1.7的Scheduler中有一个方法 setJobFactory

然后,如下

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

sched.setJobFactory(jobFactory);

再去看原来Job中的属性,已经被注入了。

方法2:

public class ApplicationContextHolder implements ApplicationContextAware {private static ApplicationContext applicationContext;@SuppressWarnings("all")public void setApplicationContext(ApplicationContext context) throws BeansException {if(this.applicationContext != null) {throw new IllegalStateException("ApplicationContextHolder already holded 'applicationContext'.");}this.applicationContext = context;}public static ApplicationContext getApplicationContext() {if(applicationContext == null)throw new IllegalStateException("'applicationContext' property is null,ApplicationContextHolder not yet init.");return applicationContext;}public static Object getBean(Class<?> clazz) {return null == applicationContext ? null : applicationContext.getBean(clazz);}public static Object getBean(String beanName) {return getApplicationContext().getBean(beanName);}public static void cleanHolder() {applicationContext = null;}
}

使用方法

在Job中使用 ApplicationContextHolder.getBean() 赋值给原来需要注入的属性。

推荐使用方法1 ,没有侵入性,而且需要更改的代码量最少。

单独使用Quartz 2.1.7 时Job属性Spring无法注入相关推荐

  1. JAVA_OA管理系统(四)番外篇:使用Spring注解注入属性

    本文介绍了使用Spring注解注入属性的方法.使用注解以前,注入属性通过类以及配置文件来实现.现在,注入属性可以通过引入@Autowired注解,或者@Resource,@Qualifier,@Pos ...

  2. spring实现属性值的注入

    首先创建一个实体类User @Data @Builder @NoArgsConstructor @AllArgsConstructor public class User {private Strin ...

  3. 【报错笔记】在eclipse中做Spring项目时,创建Spring容器时老是出错

    在eclipse中做Spring项目时,创建Spring容器时老是出错 写完这句代码无法导包,最后发现包导错了,我原来导的4.3.9的包,而且是后缀为其他的包,而且对JDK也有要求,我又下载了5.0. ...

  4. 从头认识Spring-1.7 如何通过属性注入Bean?(1)-如何通过属性向对象注入值?...

    这一章节我们来讨论一下如何通过属性注入Bean? 这一章节分为两部分,第一部分我们通过属性向对象注入值,第二部分我们通过属性向对象注入还有一个对象的引用. 1.如何通过属性向对象注入值? (1)dom ...

  5. spring bean配置_在运行时交换出Spring Bean配置

    spring bean配置 如今,大多数Java开发人员都定期与Spring打交道,而我们当中的许多人都已经熟悉了它的功能和局限性. 最近,我遇到了一个我从未遇到过的问题:引入了基于运行时引入的配置来 ...

  6. 在运行时交换出Spring Bean配置

    如今,大多数Java开发人员都定期与Spring打交道,而我们当中的许多人已经熟悉了Spring的功能和局限性. 最近,我遇到了一个我从未遇到过的问题:引入了基于运行时引入的配置来重新连接Bean内部 ...

  7. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  8. Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件

    转:http://blog.csdn.net/xlgen157387/article/details/40349929 (1)下边的一个Java类包含了所有Map.Set.List.数组.属性集合等这 ...

  9. quartz集群分布式(并发)部署解决方案-Spring - 推酷

    quartz集群分布式(并发)部署解决方案-Spring - 推酷 quartz集群分布式(并发)部署解决方案-Spring - 推酷 posted on 2015-09-05 16:03 lexus ...

最新文章

  1. 八款开源 Android 游戏引擎 (巨好的资源)
  2. Jackson ObjectMapper
  3. 2-4 测试案例helloWorld
  4. Android应用开发—onSaveInstanceState方法什么时候被调用?
  5. matplotlib使用GridSpec自定义子图位置 (非对称的子图)
  6. 0.IT-解决方案-0-VOIP
  7. (23)FPGA锁存器与缓冲器的区别
  8. Symantec 赛门铁克招聘 Security Response Manager
  9. Ubuntu16.04安装VirtualBox及无法启动的解决办法
  10. SpringAop源码一:通知方法优先级
  11. java list取补集_Java 2 个 List 集合数据求并、补集操作
  12. 计算机中桌面位置更改,电脑默认桌面文件夹位置修改不了怎么办
  13. 洛谷 P5594 【XR-4】模拟赛
  14. php伪协议xss,XSS漏洞学习
  15. dodo:人脸识别方法个人见解
  16. Excel插件获取单元格批注以及设置批注
  17. 【从零开始玩量化12】无风险利率
  18. 用HTML+CSS仿网易云音乐网站(6个页面)_实训素材
  19. 明确无非升即走!博士50-80万房补!特聘副研年薪20万+, 这所高校2023年招聘
  20. 行频 场频 分辨率公式推导(推荐)

热门文章

  1. ipad浏览器安装java_在桌面浏览器中调试iphone、ipad等设备上的网页
  2. linux简易教程 莫烦,安装 Ubuntu 17.10
  3. 推荐9款最佳的编程字体
  4. vue源码分析系列三:render的执行过程和Virtual DOM的产生
  5. VMware虚拟机与物理机网络互通
  6. KONE-FLOW Vistor Key
  7. 数学建模债券投资组合_最优投资组合问题的数学模型
  8. 各类编程视频教学资源下载
  9. 如何用迅捷PDF转换器获取PDF文件中的图片
  10. android 投屏 app 三星,两种支持三星Note10投屏到电脑的方法推荐