Spring AOP(面向切面)

Spring AOP作为面向切面编程的实现,补充了OOP的不足,提供日志、事务管理等中间件解决方案。AOP包括切面、切入点、连接点、通知等概念,通知类型包括前置、后置、环绕等。织入是将切面与对象关联,创建被通知对象的过程。使用Spring AOP需要添加依赖并配置切入点表达式。

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

SpringAOP简介:

与OOP对比:

面向对象编程OOP(Object Oriented Programming)语言提供了类与类之间纵向的关系(继承、接口),
而面向切面编程AOP(Aspect Oriented Programming)补充了横向的关系。
AOP提供了切面,切面对关注点进行模块化,例如横切多个类型和对象的事务管理(这些关注点术语通常称作横切(crosscutting)关注点)。

优点:

AOP提供了强大的中间件解决方案,这使得Spring IOC更加完善。

应用场景:

我们可以通过AOP来实现日志监听,事务管理,权限控制等等。

AOP术语:

切面(Aspect) :

我们将自己需要插入到目标业务逻辑中的代码模块化, 通过AOP使之可以横切多个类的模块,称之为切面。
在Spring AOP中,切面可以使用通过类(基于模式(XML)的风格)或者在普通类中以@Aspect注解(AspectJ风格)来实现。

在Spring AOP配置中切面通常包含三部分:

  • 切面模块本身
  • 通知
  • 切入点

切入点 (Pointcut)

在 Spring AOP 中,需要使用 AspectJ 的切点表达式来定义切点。

连接点(Join point):

程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中一个连接点总是代表一个方法的执行。个人理解:AOP拦截到的方法就是一个连接点。通过声明一个org.aspectj.lang.JoinPoint类型参数我们可以在通知(Advice)中获得连接点的信息。这个在稍后会给出案例。

切入点(Pointcut):

匹配连接点(Join point)的断言。通知(Advice)跟切入点表达式关联,并在与切入点匹配的任何连接点上面运行。
切入点表达式如何跟连接点匹配是AOP的核心,Spring默认使用AspectJ作为切入点语法。
通过切入点的表达式来确定哪些方法要被AOP拦截,

AspectJ 指示器 描述
execution () 用于匹配连接点的执行方法 最常用
args () 限制连接点的指定参数为指定类型的执行方法
@args () 限制连接点匹配参数类型由指定注解标注的执行方法
this () 限制连接点匹配 AOP 代理的 Bean 引用为指定类型的类
target () 限制连接点匹配特定的执行对象,目标对象是指定的类型
@target () 限制连接点匹配特定的执行对象,这些对象对应的类要具备指定类型注解
within() 限制连接点匹配指定类型,比如哪个包下,或哪个类里面<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值