说明:收录90万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210773318.8 (22)申请日 2022.07.01 (71)申请人 江苏金融租赁股份有限公司 地址 210000 江苏省南京市 建邺区嘉陵江 东街99号金融城1号楼8-9、 11-19、 2 5- 33层 (72)发明人 孙煜 吴玮 张伶俐 王宗力  (74)专利代理 机构 南京瑞华腾知识产权代理事 务所(普通 合伙) 32368 专利代理师 徐冲冲 (51)Int.Cl. G06F 8/30(2018.01) G06F 16/23(2019.01) (54)发明名称 基于AspectJ的自定义注解实现全局业务锁 的方法 (57)摘要 本发明公开了基于AspectJ的自定义注解实 现全局业务锁的方法。 该方法包括在JAVA 工程中 引入AspectJ的jar包或者maven中添加AspectJ 的依赖, 根据业务场景新建加锁注解、 解锁注解 和加解锁注解, 并新建存储表, 定义注解的作用 范围为方法级、 周期为全周期、 属性为默认 值, 在 切面类中定义注解的切点, 在切面类中设定拦截 注解的方法, 在业务方法上根据业务场景选择添 加相应的注解。 本发明不需要查询业务数据, 当 业务场景复杂时, 仅需要查询该数据是否存在于 存储表, 将控制权交由加锁数据而非业务场景, 实现查询的简单化, 同时业务场景变化不会影 响 加锁数据的逻辑, 使用多个自定义注解, 细化锁 的概念, 丰富了加锁场景。 权利要求书2页 说明书7页 附图4页 CN 115268864 A 2022.11.01 CN 115268864 A 1.基于AspectJ的自定义注解实现全局业 务锁的方法, 其特 征在于, 包括: 步骤1、 在JA VA工程中引入AspectJ的jar包或者maven中添加AspectJ的依赖; 步骤2、 根据业务场景新建三个注解, 分别为加锁注解@LockData、 解锁注解@ UnLockData和加解锁注解@PeriodicLock, 并新 建存储表BUSI_LOC K, 所述存储表BUSI_L OCK 的字段名称包括加锁数据主键PK_LOCK、 加锁信息LOCK_MESSAGE、 时间戳TS和加锁数据对应 业务来源信息PK_BI LL; 步骤3、 定义所述注解的作用范围为方法级、 周期为全周期、 属性 为默认值; 步骤4、 在切面类中定义所述注解的切点; 步骤5、 在切面类中设定拦截所述注解的方法; 步骤6、 在业 务方法上根据业 务场景选择 添加相应的注解。 2.根据权利 要求1所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在 于, 所述注解的属性包括加锁信息描述、 加锁参数位置、 加锁键名、 锁重复写标识。 3.根据权利 要求2所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在 于, 所述加锁信息描述的默认值为空字符串, 所述加锁参数位置的默认值为0, 所述加锁键 名的默认值 为空字符串, 所述锁重复写标识的默认值 为false。 4.根据权利 要求1所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在 于, 所述步骤6具体包括: 在业务操作流 程未完全结束, 需要保持占用状态时选择 添加加锁注解, 具体如下: 在切面类中, 使用@Around注解通知自定义的@LockData注解, 在调用有LockData注解 的方法时, AspectJ针对 该方法进行拦截, 生 成代理类, 执行该业务方法时, 先执行切面类中 的加锁方法, 然后执 行业务方法; 在业务流程结束后解除占用时, 选择 添加解锁 注解, 具体如下: 在切面类中, 使用@AfterReturning注解通知自定义的@UnLockData注解, 在调用有 UnLock注解的方法时, AspectJ针对该方法进行拦截, 生成代理类, 当业务方法成功执行结 束后, 执行切面类中的解锁方法, @AfterReturning在方法出现异常后, 不会执行切面类中 的解锁操作; 在业务操作为原子操作, 需要在业务方法执行期间保持占用状态时选择添加加解锁注 解, 具体如下: 在切面类中, 使用@Before注解通知自定义的@PeriodicLock注解, 在调用有 PeriodicLock注解的方法时, AspectJ针对该方法进行拦截, 生成代理类, 执行该业务方法 前, 先执行切面类中的加锁方法, 然后执行业务方法; 使用@After注解通知自定义的@ PeriodicLock注解, 带有 标记@PeriodicLock注解的业务方法执行结束后, 会执行切面类中 的解锁方法, 无论业务方法执行成功与否, 使用@After注解通知自定义的@PeriodicLock注 解的解锁方法都会执 行。 5.根据权利 要求4所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在 于, 所述切面类中的加锁方法具体如下: 在业务方法参数栈中, 根据argPosition获取加锁参数位置, attribute反射获取加锁 参数实例值, 以加锁参数值作为PK_LOCK插 入到存储表BUSI_LOCK中。 6.根据权利 要求4所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在权 利 要 求 书 1/2 页 2 CN 115268864 A 2于, 所述切面类中的解锁方法具体如下: 在业务方法参数栈中, 根据argPosition获取加锁参数位置, attribute反射获取加锁 参数实例值, 对 存储表BUSI_LOCK 执行PK_LOCK为加锁参数值的DELETE数据操作。 7.根据权利 要求4所述的基于AspectJ的自定义注解实现全局业务锁的方法, 其特征在 于, 还包括: 在业 务操作为重复操作, 需要覆盖加锁时进行业 务重复加锁, 具体如下: 执行所述切面类中的加锁方法前, 加入重复加锁的逻辑, 所述重复加锁的逻辑为: 在业 务方法参数栈中, 根据reset获取锁重复写标识, 根据reset锁重复写标识判断是否需要重 复加锁, 如需要重复加锁, 根据参数栈中获取的PK_BILL值对存储表BUSI_LOCK执行PK_BILL 为条件的DELETE数据操作, 其中, PK_BILL为该业务操作对应的业务数据主键, 执行完成DELETE数据操作之后, 继续加锁 操作。权 利 要 求 书 2/2 页 3 CN 115268864 A 3

PDF文档 专利 基于AspectJ的自定义注解实现全局业务锁的方法

文档预览
中文文档 14 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于AspectJ的自定义注解实现全局业务锁的方法 第 1 页 专利 基于AspectJ的自定义注解实现全局业务锁的方法 第 2 页 专利 基于AspectJ的自定义注解实现全局业务锁的方法 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-07 12:43:21上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。