當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
单独使用Quartz 2.1.7 时Job属性Spring无法注入
生活随笔
收集整理的這篇文章主要介紹了
单独使用Quartz 2.1.7 时Job属性Spring无法注入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在使用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; } }
再去看原來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无法注入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android从程序员到架构师之路3
- 下一篇: 数据结构与算法01:一张图概括【数据结构