如何在quartz的job中实现spring的依赖注入

原创 2015年07月08日 14:19:05

quarz的job通常会依赖业务对象执行操作,通常这些业务对象可以在job初始化时通过dataMap传入,但是在采用数据库持久化Job的模式下,这些业务对象会被持久化,所以需要对业务对象进行序列化操作,但由于很多业务对象无法进行序列化,所以持久化的过程就会报错。
如果能够在job中实现业务对象的依赖注入就能避开上面的问题,那么如何实现呢?

下面这种方式就可以轻松实现:
只需要在Job的execute方法中加入SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this)即可

示例如下:

@Component
public class DataMigrationJob implements Job {

    @Autowired
    private DataMigrationService dataMigrationService;

    public static final Logger logger = LoggerFactory.getLogger(DataMigrationJob.class);

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 使得job对象可以通过注解实现依赖注入
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

        CronTaskRequestBO migrationInfo = (CronTaskRequestBO) jobExecutionContext.getMergedJobDataMap().get("migrationInfo");
        DataMigrationRequestBO request = getDataMigrationRequestBO(migrationInfo);
        logger.info("start migration task");
        dataMigrationService.startMigration(request);
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

单独使用Quartz 2.1.7 时Job属性Spring无法注入

在使用Quartz的时候遇到一个问题: 原因: 当前使用的是Spring-Quartz,xml配置,但是Job太多,导致很多的xml配置 目的: 不使用spring-quartz的配置,单独使...

spring3.1.2整合quartz2.2.2 maven管理依赖

spring3.1.2整合quartz2.2.2 maven管理依赖 在spring配置文件, <beans xmlns="http://www.springframework.org/schema...

Quartz任务调度控件 Spring整合Quartz

Spring整合Quartz(JobDetailBean方式) 一、Spring创建JobDetail的两种方式二、整合方式一示例步骤�0�2�0�2 1、将spring核心ja...

Quartz SchedulerFactoryBean异常--Spring自动装配惹的祸

Spring的配置文件,启用了自动装配模式:             ... 则此时会产生如下错误: Error cr...

Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案

项目过程中有这样一个场景:调用w

Spring整合Quartz浅析

Quartz概念基础Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。核心元素概念: Job: 是一个接口,只有一个方法void execut...

quartz 与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象

问题Quartz中的job是由Quartz框架动态创建的(配置该job的classname,通过反射创建),而job一般会依赖到配置在spring中的bean,怎样获取或者更好的自动注入这些依赖bea...

Quartz的使用(解决quartz的job无法注入spring对象)

1、说明:spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。至于原因,则是spring对于quartz的支持实现,org.spring...

java中quartz 调度在一些定时任务(job)的入门级应用

Quartz 执行详解:http://quartz-scheduler.org/   去下载相应的jar包 在maven中可直接把依赖拷贝过来复制到pom中去。 具体规则可查询quartz的文档 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)