quartz的job实现类无法注入Service类
程序员文章站
2022-03-03 10:47:11
...
原因
Job是在quartz的框架中实例化的,service是在spring容器中创建出来的。
所以Job实现类不受spring管理,即导致注入失败。
解决方案
在executeInternal方法中加入一行代码SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);就ok了
如下
@Component public class RemindJob extends QuartzJobBean { private static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(RemindJob.class); @Autowired private ProjectTaskService projectTaskService; @Override protected void executeInternal(JobExecutionContext arg0) { SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); log.info("RemindJob have bean started... "); projectTaskService.duRemindJob(); } }
推荐阅读
-
ThinkPHP6源码:从Http类的实例化看依赖注入是如何实现的
-
浅析PHP类的反射来实现依赖注入过程
-
@Autowired 和 @Resource注解, 一个接口有多个实现类的时候Spring注入遇到的问题
-
spring为类的静态属性实现注入
-
Java实现普通类注入service对象
-
Springboot实现多线程注入bean的工具类操作
-
websocket采用tomcat方式,IOC类对象无法注入的解决方案
-
SpringBoot实现其他普通类调用Spring管理的Service,dao等bean
-
Springboot实现根据条件切换注入不同实现类的示例代码
-
spring boot集成shiro,配置ShiroConfig类相关继承org.apache.shiro.spring.web的类@Autowired无法注入问题