【Spring AOP讲解】

Spring AOP(Aspect-Oriented Programming) 即面向切面编程,是一种编程范式,旨在提高代码模块化,使得开发者可以将横切关注点(如日志记录、事务管理、安全性等)与业务逻辑分离,进而在不修改业务代码的前提下增加或修改这些关注点。通知类型包括前置通知(Before)、后置通知(After returning)、异常通知(After throwing)、最终通知(After),以及环绕通知(Around)。它通常是一个代理对象,是AOP框架生成的一个被通知对象的代理实例。
摘要由CSDN通过智能技术生成

1. Spring AOP

Spring AOP(Aspect-Oriented Programming) 即面向切面编程,是一种编程范式,旨在提高代码模块化,使得开发者可以将横切关注点(如日志记录、事务管理、安全性等)与业务逻辑分离,进而在不修改业务代码的前提下增加或修改这些关注点。

Spring AOP是Spring框架中的一个重要部分,利用动态代理实现,支持基于代理的AOP。

2. 核心概念

  1. Aspect(切面): 一个关注点的模块化,这个关注点可能会横切多个对象。切面可以包含任意的通知(也就是下文所说的Advice)和一个或多个切点(下文的Pointcuts)。

  2. Join point(连接点): 在程序执行过程中某个特定点,例如方法调用或异常抛出的时刻。在Spring AOP中,一个连接点总是代表一个方法的执行。

  3. Advice(通知): 在切面的某个特定的连接点上采取的行动。通知类型包括前置通知(Before)、后置通知(After returning)、异常通知(After throwing)、最终通知(After),以及环绕通知(Around)。

  4. Pointcut(切点): 匹配连接点(Join points)的谓语或表达式。通常使用简洁的表达式语言来指定切点以匹配多个连接点。

  5. Target object(目标对象): 被一或多个切面所通知的对象。它通常是一个代理对象,是AOP框架生成的一个被通知对象的代理实例。

  6. AOP proxy(AOP代理): AOP框架创建的对象,用以实现切面契约(例如方法执行前后进行某些处理)。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。

  7. Weaving(编织): 连接应用类型或对象与切面来创建通知的过程。这个过程可以在编译时、类加载时或运行时发生。

3. 实现AOP的方式

  1. 使用Spring AOP XML配置: 通过在Spring的配置文件中定义切面和通知器等。

  2. 使用@AspectJ注解: Spring AOP也支持@AspectJ的注解方法,这种方式使用注解定义切点和通知,通常更为直观和集中。

4. 示例

以下是一个使用Spring AOP的@AspectJ注解方式的示例:

@Aspect
@Component
public class LoggingAspect {
   

    // 定义切点,匹配所有的save方法。
    @Pointcut("execution(* com.example.service.*.save(..))")
    public void savePointcut
  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值