博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
像@Transactional一样利用注解自定义aop切片
阅读量:5066 次
发布时间:2019-06-12

本文共 1514 字,大约阅读时间需要 5 分钟。

在spring中,利用@Transactional注解可以很轻松的利用aop技术进行事物管理。在实际项目中,直接利用自定义注解实现切片可以大大的提高我们的编码效率以及代码的简洁性。

实现以上的目标,主要涉及两方面工作。

  1. 自定义注解
  2. 将注解声明为切片

自定义注解

介绍注解自定义的文章比较多,这里简要介绍一下以下面的代码为例。该代码要实现一个分布式锁的代码。首先利用@interface来声明该类为接口类,用@Target来声明该注解的作用范围。该例子中ElementType.METHOD, ElementType.TYPE表明该注解作用范围是方法和类。@Retention注明该注解的作用周期。RetentionPolicy.RUNTIME表明该注解在运行时也是有效的。

package com.whaty.lock.annotation;import org.springframework.stereotype.Component;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Component@Target(value = {ElementType.METHOD, ElementType.TYPE})@Retention(value = RetentionPolicy.RUNTIME)public @interface Lock {    public LockImpl lockImpl() default LockImpl.MYSQL;    public enum LockImpl {        MYSQL, ZOOKEEPER    }}

将注解声明为切片

下面的代码是实现注解切片逻辑的代码。其中@Aspect用来声明切片的实现。在这个代码里面,最关键的一步是

@Around(value = "@annotation(com.whaty.lock.annotation.Lock)")
这个声明与普通的注解式声明切片类似,只是其中@annotation表明该切片作用范围为声明的注解作用范围。

package com.whaty.lock.aspect;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;@Component@Aspectpublic class LockAspect {    @Around(value = "@annotation(com.whaty.lock.annotation.Lock)")    void execute(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {        // 尝试获取锁        proceedingJoinPoint.proceed();        // 释放锁    }}

转载于:https://www.cnblogs.com/chenatu/p/10794556.html

你可能感兴趣的文章
poj 3041
查看>>
批量删除64
查看>>
乱谈数学--我理解的函数极限运算
查看>>
关于博主&&联系博主
查看>>
ANF
查看>>
TZOJ 1321 Girls and Boys(匈牙利最大独立集)
查看>>
6月24日AppCan移动开发者大会礼品清单遭泄露
查看>>
java——HashMap的实现原理,自己实现简单的HashMap
查看>>
java servlet上传centos服务器
查看>>
前端读者 | 由setTimeout引发的JS引擎运行机制的研究
查看>>
全排列算法
查看>>
菜鸟涂鸦作品展_No.4
查看>>
Javascript设计模式理论与实战:适配器模式
查看>>
存储过程Procedure
查看>>
安装MongoDB(做成Windows服务)并加载C#驱动程序
查看>>
我的第一篇日志
查看>>
基于Jquery的放大镜(模仿淘宝的不同尺寸图片查看)
查看>>
2.UDP
查看>>
Shell脚本编写及常见面试题
查看>>
增删改查的45道题
查看>>