spring aop八大核心概念的通俗简洁理解,一看就明白

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


AOP简介

在了解aop之前首先要引入oop的概念
oop也就是我们熟知的面向对象程序设计(Object Oriented Programming),oop关注的是将功能划分为模块,比如我们熟悉的三层架构——表现层、业务层、持久层,然后针对模块进行进一步的开发。
在这里插入图片描述
而aop更加侧重于“抽取”的思想。抽取一些高频重用的代码块等,有一种“切开”的意思
在这里插入图片描述
使用aop的优势很多——代码可重用性高,编码更简洁、代码维护更高效、业务扩展更便捷等
在这里插入图片描述

AOP入门

核心概念

在这里插入图片描述

1、连接点

AOP将所有的方法都视为连接点,不管是接口里面的抽象方法,还是实现类里面的重写方法,都是连接点

2、切入点

AOP将可能被抽取共性功能的方法称为切入点。切入点是连接点的子集

3、通知

AOP将抽取出来的共性功能称为通知。
通知类型:以通知在上下文中的具体位置作为划分。

4、切面

ASP将切入点和通知(也就是被抽取的方法,和抽取出来的共性功能)之间的关系称为切面,切面描述了两者之间的关系。比如说,通知在切入点的上下文关系如何,这样才能保证将通知拼接回切入点之后能让程序正常运行
在这里插入图片描述

5、目标对象

在把切入点的通知抽取完成之后剩下的部分(就像是残缺的方法),而一个方法必须要作为一个类的一部分参与整个项目,而这个类的调用需要一个实例化对象,这个对象就是所谓的目标对象

6、织入

目标对象单打独斗是绝对不能运行的,我们需要将之前从切入点抽取的通知按照切面规定的关系还原回去,这样才是具有完整运行能力的方法。这个还原回去的过程,AOP称为织入

7、代理

织入完成后,我们又重新获得了一个完整的方法;类似的,这个方法也要作为一个类的一部分参与项目的构建,而这个类是通过“5、目标对象”所在的类,变化过来的。这个变换的过程,称为代理。

8、 引入

通过代理我们得到了一个新的类,这个类具有目标对象所在类的一切属性、方法。同时,这个新的类,可以像打补丁一样,自己重新定义一些属性和方法(可以在不修改原有代码的基础上完成新增功能,这是非常重要的应用)

总结

在这里插入图片描述
在实际开发中,只需要我们编写切入点(从哪里抽取?抽取的对象是哪个方法?)、切面(抽取的代码的上下文关系如何?)、通知(抽取的共性功能是什么?)三大功能即可。
在这里插入图片描述

简单配置

在spring的核心配置文件中加上aop的相关实现。AOP最初只是一种编程规范,而spring对其作了实现

<bean id="myAdvice" class="com.ych.aop.AOPAdvice"/>

<!--    AOP的配置-->
    <aop:config>
<!--        为切入点配置唯一的id,切入点表示从哪个方法进行抽取-->
        <aop:pointcut id="pt" expression="execution(* *..*(..))"/>
<!--        声明切面,切面表示切入点和通知Advice的关系,ref表示通知的id-->
        <aop:aspect ref="myAdvice">
<!--            before method表示是从切入点的代码之前抽取的代码;point-ref是之前切入点的id-->
            <aop:before method="fun" pointcut-ref="pt"/>
        </aop:aspect>
    </aop:config>
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值