Spring AOP之概念篇

本文全面解析AOP(面向切面编程)核心概念,包括横切关注点、切面、通知、连接点等,详述SpringAOP的注解与XML配置方式,涵盖@Aspect、@Before、@After等注解使用,及<aop:config>、<aop:aspect>等XML元素,并提供实战例子,助你掌握AOP在Spring框架中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、AOP相关术语

横切关注点(cross-cutting concern):散布于应用中多处的功能。

切面(aspect):通知和切点的结合。

通知(advice):前置通知(Before)、后置通知(After)、返回通知(After-returning)、异常通知(After-throwing)、环绕通知(Around)

        执行顺序:Around --> Before --> 目标方法 --> Around --> After-returning/ After-throwing --> After

连接点(Join Point):在应用执行过程中能够插入切面的一个点。

切点(Pointcut):匹配通知所要织入的一个或多个连接点。

织入(Weqving):把切面应用到目标对象并创建新的代理对象的过程。

        编译期:在目标类编译时被织入,需要特殊的编译器,如AspectJ的织入编译器(ajc)

        类加载期:在目标类加载到JVM时被织入,需要特殊的类加载器(ClassLoader),如AspectJ5的加载时织入(load-time weaving,LTW)

        运行期:切面在应用运行的某个时刻被织入,如Spring AOP(构建于动态代理基础之上,因此局限于方法拦截)。

                       注:基于反射(接口)的JDK动态代理,基于继承(类)的CGLib动态代理

引入(Introduction):允许我们向现有的类添加新方法或属性。

注:详细理解Spring AOP可点击传送门 彻底征服 Spring AOP 之 理论篇

二、注解方式创建切面

@Aspect:标注于类上,表明该类是一个切面。

@After:通知方法会在目标方法返回或抛出异常后调用

@AfterReturning:通知方法会在目标方法返回后调用

@AfterThrowing:通知方法会在目标方法抛出异常后调用

@Around:通知方法会将目标方法封装起来(注:可使用ProceedingJoinPoint的proceed()方法启动目标方法执行)

@Before:通知方法会在目标方法调用之前执行

@Pointcut:在@Aspect切面类中创建一个可重用的切点

@EnableAspectJAutoProxy:在javaConfig配置类(@Configuration)中启动自动代理功能(自动为使用@Aspect注解的bean创建一个代理)

@DeclareParents:通过此注解可实现引入功能。所标注的静态属性指明了要引入的接口

        Value属性:指定了那种类型的bean要引入该接口

        defaultImpl属性:指定了为引入功能提供实现的类

三、XML方式创建切面

<aop:config>             顶层的AOP配置元素,大多数的<aop:*>元素必须包含在<aop:config>元素内

<aop:aspect>             定义切面

<aop:aspect-autoproxy>        启用@AspectJ注解驱动的切面(自动代理)

<aop:pointcut>          定义切点

<aop:advisor>            定义AOP通知器

<aop:before>             定义AOP前置通知

<aop:after> 定义AOP后置通知(不管被通知的方法是否执行成功)

<aop:after-returning>             定义成功返回后的通知

<aop:after-throwing>             定义抛出异常后的通知

<aop:around>            定义AOP环绕通知

<aop:declare-parents>           为被通知的对象引入额外的接口,并透明地实现(引入功能)

四、Spring AOP 实战例子

Spring AOP之实战篇

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值