Aop自定义注解

使用方式1,省略如下注解

//@Around("execution(public * com.bd.xxxx.xx.xxx..*.*(..))")

用法

1.列:自定义注解GmallCache

//自定义注解
@Target(value=ElementType.METHOD)//限制运行在方法上
@Retention(value=RetentionPolicy.RUNTIME)//运行时有效
public@interfaceGmallCache {
​
}

2.为需要代理的目标方法上加入自定义的注解 @GmallCache

    @GmallCache
    @Override
    publicSkuInfofindSkuById() {}

3.使用,可以省@Around("@annotation(com.atguigu.gmall.item.anno.GmallCache)")

// @Around("@annotation(xxx.xxx.xx.xx.GmallCache)")
    @Around("@annotation(gmallCache)")
    publicObjectaround(ProceedingJoinPointproceedingJoinPoint , GmallCachegmallCache) throwsThrowable {      // 环绕通知
        log.info("AopAspect2.....around..前..方法执行了");
        Objectproceed=null ;
        try {
            proceed=proceedingJoinPoint.proceed();
            log.info("AopAspect2.....around..后..方法执行了");
        }catch (Exceptione) {
            e.printStackTrace();  // 异常后通知
        } finally {
            // 最终通知
        }
        System.out.println(proceed);
        returnproceed ;
    }
}

多切面的执行顺序:

  • 按照@Order指定的注解顺序排序;数字越小,优先级越高,优先级越高越优先执行

  • 如果@Order的值是相同的,按照切面类名的字母顺序进行排序

  • 如果@Order使用的都是默认值,事务切面的优先级最高

  • 事务:异常类型错误:事务默认回滚的是:RuntimeException,如果异常被try catch 后未抛出运行时异常 事务就会失效如果你想触发其他异常的回滚,需要在注解上配置一下,如:@Transactional(rollbackFor = Exception.class)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值