Quartz Job类无法注入spring bean问题解决方法

柔光的暖阳◎ 2022-05-14 10:48 606阅读 0赞

问题描述:
在Quartz的任务类中,无法使用autowired注入spring bean

  1. @Component
  2. @PersistJobDataAfterExecution
  3. @DisallowConcurrentExecution
  4. public class XXJob implements Job{
  5. @Autowired
  6. private XxxService xxxService;
  7. }

原因:

Quartz与SpringMVC的context不同,父context无法访问子context中的bean。

解决方法:

使用org.springframework.web.context.support下的一个工具类叫SpringBeanAutowiringSupport,主要用来对Spring Web Application Context之外的类提供@Autowired注入功能

  1. SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

完整代码

  1. @Override
  2. public void execute(JobExecutionContext context)
  3. throws JobExecutionException {
  4. // 使得job对象可以通过注解实现依赖注入
  5. SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
  6. //其他操作
  7. }

发表评论

表情:
评论列表 (有 0 条评论,606人围观)

还没有评论,来说两句吧...

相关阅读