一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用spring-quartz提供的AdaptableJobFactory类。

自定义一个类:

  1. public class JobFactory extends AdaptableJobFactory {
  2. @Autowired
  3. private AutowireCapableBeanFactory capableBeanFactory;
  4. @Override
  5. protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
  6. //调用父类的方法
  7. Object jobInstance = super.createJobInstance(bundle);
  8. //进行注入
  9. capableBeanFactory.autowireBean(jobInstance);
  10. return jobInstance;
  11. }
  12. }

然后在spring中配置:

  1. <!-- 定时任务的factorybean,配置其他config -->
  2. <bean id="jobFactory" class="com.xx.job.JobFactory"></bean>
  3. <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  4. <property name="jobFactory" ref="jobFactory"></property>
  5. </bean>

这时候,我们在定义类继承job的时候,就可以使用autowired注入service对象了:

    1. public class Test1Job implements Job {
    2. public final Logger log = Logger.getLogger(this.getClass());
    3. @Autowired
    4. private JobTaskService jobTaskService;
    5. public void execute(JobExecutionContext context) throws JobExecutionException {
    6. //更新上一次执行时间和下一次计划执行时间
    7. Date nextProcessTime = context.getNextFireTime();
    8. ScheduleJob job = (ScheduleJob) context.getJobDetail().getJobDataMap().get("scheduleJob");
    9. job.setNextProcessTime(nextProcessTime);
    10. jobTaskService.updateTaskByJobName(job);
    11. //业务逻辑
    12. System.out.println("22222222222222222222:");
    13. }
    14. }

quartz的job中注入spring对象!的更多相关文章

  1. java多线程中注入Spring对象问题

    web应用中java多线程并发处理业务时,容易抛出NullPointerException. 原因: 线程中的Spring Bean没有被注入.web容器在启动时,没有提前将线程中的bean注入,在线 ...

  2. Java(多)线程中注入Spring的Bean

    问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入 ...

  3. 【转】Java(多)线程中注入Spring的Bean

    问题说明 今天在web应用中用到了Java多线程的技术来并发处理一些业务,但在执行时一直会报NullPointerException的错误,问题定位了一下发现是线程中的Spring bean没有被注入 ...

  4. service手动实例化(new)导致类中的spring对象无法注入的问题解决

    下面说的这个画横线的可能是错误的,因为我之前用controller继承父类的注解对象的时候成功了,所以可能这次的唯一原因就是 不该把本该从ioc容器中拿出的对象通过new的方式实例化,至于继承注解对象 ...

  5. 非spring组件servlet、filter、interceptor中注入spring bean

    问题:在filter和interceptor中经常需要调用Spring的bean,filter也是配置在web.xml中的,请问一下这样调用的话,filter中调用Spring的某个bean,这个be ...

  6. 如何在静态方法或非Spring Bean中注入Spring Bean

           在项目中有时需要根据需要在自己new一个对象,或者在某些util方法或属性中获取Spring Bean对象,从而完成某些工作,但是由于自己new的对象和util方法并不是受Spring所 ...

  7. SpringBoot中注入ApplicationContext对象的三种方式

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 在项目中,我们可 ...

  8. Spring管理Filter和Servlet(在servlet中注入spring容器中的bean)

    在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建.如果要在servlet中使用spring容器管理业务对 ...

  9. 在Spring MVC Controller中注入HttpServletRequest对象会不会造成线程安全的问题

    做法: 1.比如我们在Controller的方法中,通常是直接将HttpServletRequest做为参数,而为了方便节省代码,通常会定义为全局变量,然后使用@Autowire注入. 说明: 1.观 ...

随机推荐

  1. 关于synchronized和Lock

    原文链接:关于volatile关键字解析,synchronized和Lock参考 深入浅出,解释的非常清楚,有条理~~~ 以下为转载内容: Java并发编程:volatile关键字解析 volatil ...

  2. JS分支结构与循环结构

    1.分支结构 ①if语句 语法结构 if (/* 条件表达式 */) { // 执行语句 } ​ if (/* 条件表达式 */){ // 成立执行语句 } else { // 否则执行语句 } ​ ...

  3. HTML+CSS项目——模拟京东网页

    项目准备 项目名称:京东商城 项目描述:京东首页公共部分的头部和尾部制作,京东首页中间部分. 设计目标 保证浏览器 ie7及以上, 火狐, 360, safari,chrome等.谁让我再测ie6,就 ...

  4. C++11中的技术剖析(std bind原理简单图解)

    此文为转载,好像原出处的原文已经无法打开了. 本文解释了bind 是如何工作的.为了清晰,我对图中的语法作了一些简化(例如,省略函数调用操作符的参数类型),并且简化了 bind 的实现. bind 可 ...

  5. Android获取Root权限之后的静默安装实现代码示例分析

    转:http://blog.csdn.net/jiankeufo/article/details/43795015 Adroid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但 ...

  6. 牛客多校第八场 B Beauty Values 水题

    题意: 给定一个序列,问你子区间中不同数字数量,在所有子区间中之和为多少. 题解: 统计每个数字在多少个区间中出现即可.对于每个数字,直接枚举左右端点. 注意去重,因此要记录每个数字上一次出现在哪里, ...

  7. Async_Study

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 今天学会了如何察看SSDT里面的东西、修改里面的地址

    简简单单,虽然不懂它的道理,就算会用了吧 哎,内核级的东西调着也费事 因为一个 extern 没写,我可怜的虚拟机,连续蓝屏了4次. typedef struct _ServiceDescriptor ...

  9. SQLAlchemy连接数据库创建表

    # 连接数据库,创建表 def create_all(): engine = create_engine( 'mysql+pymysql://root:123456@127.0.0.1:3306/sq ...

  10. 使用SpringBoot1.4.0的一个坑

    时隔半年,再次使用Spring Boot快速搭建微服务,半年前使用的版本是1.2.5,如今看官网最新的release版本是1.4.0,那就用最新的来构建,由于部署环境可能有多套所以使用maven-fi ...