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>
Spring AOP(面向切面编程)是 Spring 框架中的一个核心概念,它允许我们在方法执行的前、后或抛出异常时插入额外的逻辑,以实现横切关注点的功能。简单来说,AOP 可以在不修改原始代码的情况下,将额外的功能模块与程序的核心逻辑分离开来,提高了代码的可维护性和可复用性。 在 Spring AOP 的实现过程中,我们需要定义切面类,并为需要实现 AOP 的方法添加注解。Spring 框架会在运行时根据这些注解,自动将切面逻辑插入到方法中,从而实现 AOP 的功能。切面类中的方法,被称为通知(advice),它定义了在方法执行的前、后或抛出异常时需要执行的逻辑。Spring AOP 提供了以下几种通知类型: 1. 前置通知(Before advice):在目标方法执行之前执行的逻辑。 2. 后置通知(After returning advice):在目标方法成功执行后执行的逻辑。 3. 异常通知(After throwing advice):在目标方法抛出异常后执行的逻辑。 4. 最终通知(After advice):在目标方法执行完毕后无论是否抛出异常都执行的逻辑。 5. 环绕通知(Around advice):在目标方法执行的前后都可以执行的逻辑。 通过使用这些通知,我们可以将不同的功能模块以切面的形式插入到目标方法中,实现对方法的增强和控制。这样,我们就可以将一些共性的操作(如日志记录、事务管理等)从核心逻辑中分离出来,提高了代码的可维护性和可复用性。 总结起来,Spring AOP 的原理就是通过在运行时动态生成代理对象,将切面逻辑织入到目标方法中,实现对方法的增强和控制。这种方式可以在不修改原始代码的情况下,实现横切关注点的功能,提高了代码的可维护性和可复用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SpringAOP 原理详解](https://blog.csdn.net/wizard_hu/article/details/130123613)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Spring AOP概念理解](https://blog.csdn.net/zzpitheilang/article/details/83634727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值