Elastic-Job源码解析(一)之与Spring完美整合

本文探讨了Elastic-Job如何巧妙利用Spring自定义标签生成Job任务,介绍了Spring自定义标签的实现方式及Elastic-Job支持的任务类型与解析器。详细解析了Elastic-Job的任务标签如何被解析并生成SpringJobScheduler对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看过小编写SpringFramework源码解析的同学应该对Spring支持自定义标签还有点印象吧,没有的话我们回顾下,然后看看Elastic-Job是如何巧妙的利用自定义标签生成Job任务的吧。请注意这里用了一个巧妙关键字。我们看它如何巧妙的吧。

Spring自定义标签

在Spring中实现自定义标签只用继承NamespaceHandlerSupport类,然后定义自己的BeanDefinitionParse来生成BeanDefinition就可以了。就会被Spring的IOC容器加载到了。
在这里插入图片描述

注册中心解析器

在这里插入图片描述

任务解析器

Elastic-Job支持三种类型的任务

类型解析器描述
simpleSimpleJobBeanDefinitionParser一般任务
dataflowDataflowJobBeanDefinitionParser数据流任务
scriptScriptJobBeanDefinitionParser脚本任务

分别由下面标签解析器来解析
在这里插入图片描述

约束文件XSD目录(Spring通过xsd文件对xml中的标签进行约束)
在这里插入图片描述

Elastic-Job如何巧妙?

注意: 定时任务 = 定时器 + 任务
Elastic Job只给我们提供了任务标签,所以我们平时用Elastic-Job写的只是一个任务,而不是一个Bean。另外关于标签的属性,即: 定时的信息,是以属性配置的形式放在xml中的,我们可以看xsd文件约束中找到,都有哪些属性可以用,下图
job的属性
在这里插入图片描述
Elastic-Job会解析我们的xml任务信息,并通过定时的相关参数,生成SpringJobScheduler对象,在哪里进行着一操作呢?
感觉很怪异,找了很久才找到,竟然在每个任务的解析器中。为什么这么说呢? 因为实现都在抽象类中生成。
在这里插入图片描述
所有的任务解析器都实现了一个抽象方法AbstractJobBeanDefinitionParser。而在这里面对我们写的job标签进行了解析生成job对象,作为属性注入到SpringJobScheduler中,在init方法中,开始执行定时 任务(quartz)。

在这里插入图片描述

其实BeanDefinitionParse的主要职责是解析Bean对象的,而Elastic-Job巧妙的用来生成SpringJobScheduler。
由此联想到Es Job的标签都是 job:{taskType}开头的,看来命名真的很有技巧,注意他不是一个bean而是SpringJobSchedulerBean的一个参数声明 ! 还能这么用! get 到一个新技能。
另外注意①: init初始化方法中完成定时任务的初始化操作,即开始定时,底层还是使用的quartz的一个封装
②: shutdown回收资源,关闭线程池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西魏陶渊明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值