aop注解配置切点 spring_Spring中如何使用注解配置AOP?

16018e206b00a3b0e848718a98ac7e4b.png

Spring中的AOP有注解配置和XML配置两种,今天我们来讲一下注解配置。使用注解来创建切面是AspectJ5所引入的关键特性,使用注解可以非常简单地把任意类转换成切面。下面一起来看一下吧。

第一步:开启自动代理功能

无论是基于注解的aop还是基于xml的aop,都需要首先开启自动代理。使用注解的方式开启自动代理只需要在java配置类上添加注解@EnableAspectJAutoProxy即可。如图:

9a7e08f155be9027f2fabe5c46493190.png

使用xml开启的话也很简单,只需在xml文件中添加<aop:aspectj-autoproxy/>即可,如图:

f18c90249d7985078f75a48b2f371088.png

第二步:定义切面

定义切面的注解为@Aspect。

AspectJ的注解可以将任一普通的java类定义为一个切面。不过首先大家要知道切面也必须是Spring管理的一个bean,所以要配置切面首先要把它配置成bean,如下图我们把一个通过自动扫描的bean设置成切面:

03e46ffb37a8496fe6ccd4bf79a5cff9.png

这只是一个空的切面,如果要是它工作还需要配置切点和通知,下面我们来看。

第三步:定义切点

定义切点的注解为@Pointcut,如下图,我们配置了3个切点:

f529731c844ee6a2b40d7048250fbe51.png

其中execution表示执行的意思,括号中填写的是切点表达式。上图中仅仅写了比较简单也是比较常用的一种表达式,其中selectPointCut切点的含义为:权限为public的com.example.service包和其子包内的所有类的select方法,select方法的参数不限制,即只要是方法名为select就会被切点匹配到。

第四步:定义通知

通知定义了切面的行为,它包含了这个行为什么时候执行以及做什么。通知的类型包含以下几种:

@Before:在目标方法执行前执行通知;

@After:在目标方法执行后执行通知;

@AfterReturning:在目标方法执行完成后执行通知;

@AfterThrowing:在目标方法抛出异常后执行通知;

@Around:可在目标方法执行前后自定义通知行为;

这几个注解都有一个value属性,用于指定切点。可以直接在value中指定切点表达式也可以在value中引用已经存在的切点表达式,如下图

00003a76a3e677ce57612909ea0c1d4b.png

上图中Before类型的通知直接在value中定义了切点,其他类型的通知则引用了已经定义好的切点。

Around类型的通知可以接收一个ProceedingJoinPoint类型的参数,当执行joinPoint.proceed();后目标方法才会执行。

AfterThrowing类型的通知可以通过throwing属性来指定异常的名称,通过这个名称在通知方法上来接收异常。

以上就是今天的关于注解配置AOP的方法,小伙伴们如果有疑问可以在评论区留言哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值