关闭

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

标签: quartzspring
1472人阅读 评论(0) 收藏 举报
分类:

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);
    }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32576次
    • 积分:588
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:5篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论