为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 详解(二)------- AOP概念以及两种实现方式

标签:
Spring

1. AOP 关键词

  • target:目标类,需要被代理的类。例如:ArithmeticCalculator

  • Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法。例如:所有的方法

  • PointCut 切入点:已经被增强的连接点。例如:add()

  • advice:通知/增强,增强代码。例如:showRaram、showResult

  • Weaving(织入):是指把增强 advice 应用到目标对象 target 来创建新的代理对象proxy的过程.

  • proxy 代理类:通知+切入点

  • Aspect(切面)::是切入点 pointcut 和通知 advice 的结合

2. AOP 的作用

5c2cc3d200010fe608530481.jpg
当我们为系统做参数验证,登录权限验证或者日志操作等,为了实现代码复用,我们可能把日志处理抽离成一个新的方法。但是这样我们仍然必须手动插入这些方法,这样的话模块之间高耦合,不利于后期的维护和功能的扩展,有了 AOP 我们可以将功能抽成一个切面,代码复用好,低耦合。

3. AOP 的通知类型

Spring 按照通知 Advice 在目标类方法的连接点位置,可以分为5类

  • 前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。

  • 正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。

  • 异常返回通知[After throwing advice]:在连接点抛出异常后执行。

  • 返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。

  • 环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。


    Spring 中使用五种通知

1. 前置通知
    <aop:before method="" pointcut="" pointcut-ref=""/>
        method : 通知,及方法名
        pointcut :切入点表达式,此表达式只能当前通知使用。
        pointcut-ref : 切入点引用,可以与其他通知共享切入点。
    通知方法格式:public void myBefore(JoinPoint joinPoint){
        参数1:org.aspectj.lang.JoinPoint  用于描述连接点(目标方法),获得目标方法名等2. 后置通知  目标方法后执行,获得返回值
    <aop:after-returning method="" pointcut-ref="" returning=""/>
        returning 通知方法第二个参数的名称
   通知方法格式:public void myAfterReturning(JoinPoint joinPoint,Object result){
        参数1:连接点描述
        参数2:类型Object,参数名 returning="result" 配置的3. 异常通知  目标方法发生异常后
    <aop:after-throwing method="testException" throwing="e"
    pointcut="execution(* com.anqi.testAop.ArithmeticCalculator.div(..))"/>
        throwing 发生的异常
   通知方法格式:public Object testRound(ProceedingJoinPoint pjp){
        参数1:ProceedingJoinPoint
        返回值为 reslut


4. 基于 xml 的

原文出处:https://www.cnblogs.com/haixiang/p/10211250.html  

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消