boot中 Quartz注入spring管理类失败

在项目中用到了Quartz,想在里面实现业务操作发现sping类注入总是失败。后来网上查询了一下解决办法。下面把我成功解决问题的这个版本发出来,大家一起学习一下。

在quartz 会发现 job中无法注入springboot管理的类

解决方法:新建Jobfactory类

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

新建QuartzConfig类

@Configuration
@EnableScheduling
public class QuartzConfig{
  @Autowired
  JobFactory jobfactory;
  @Bean
  public SchedulerFactoryBean schedulerFactoryBean() throws IOException{
  SchedulerFactoryBean factory=new SchedulerFactoryBean();
  factory.setOverwriteExistingJobs(true);
  //延时启动
  factory.setStartupDelay(20);
  //自定义JobFactory,用于Spring注入
  factory.setJobFactory(jobFactory);
  return factory;
  }
}

之后在配置job时
@Autowired
SchedulerFactoryBean schedulerFactoryBean;
即可

切记一定要用注入的方式注入schedulerFactoryBean。

作者:___shin
链接:https://www.jianshu.com/p/73776cbd2956
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/technologykai/p/8650303.html