AOP自定义注解定位简介

业务场景

使用aop时需要编写切入点表达式来进行方法定位。
当在编写过程中代理需求频繁变化导致目标对象频繁变化时,就需要重新编写表达式。
如果能在aop操作编写完成的情况下,利用注解进行定位的话,无论后期需求怎么修改,都只需要在编写时顺手在需要代理的位置添加或删除注解即可。

前置技能

  1. AOP编程方法;
  2. 自定义注解;
  3. Java反射。

例子

  1. 首先编写我们的切面类AspectDemo:
@Aspect
@Component
public class AspectDemo {

   /**
    * 定义切点
    */
   @Pointcut("/**待编写**/")
   private void point() {
   }
   
   /**
    * 计时
    *
    * @param proceedingJoinPoint 运行态连接点
    */
   @Around("logPoint()")
   private Object access(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
       /**前置操作**/
       Object res = proceedingJoinPoint.proceed(); // 运行
      	/**后置操作**/
       return res;
   }

}
  1. 自定义注解。可以自己选择是否需要参数,以便在切面方法中让用户自定义一些操作。
    这里需要注意的是,必须要添加“@Retention(RetentionPolicy.RUNTIME)”,否则注解类不参与编译,在后续使用该注解类的地方就会抛异常;
    @Target中声明注解修饰目标,这里选择了类和方法;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AnnotationDemo {
}
  1. 在PointCut中补全表达式如下,表达式中可以使用“&&”、“||”等逻辑运算符,@annotation匹配对应注解参数修饰的方法,@within匹配对应注解参数修饰的具体类:
@Pointcut("@annotation(InBucket) || @within(InBucket)")

(完整的切入点语法 自行百度 参考别处)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值