SpringAOP源码解析

本文深入解析Spring AOP的实现原理,包括Advice通知、Pointcut的横切面、Advisor通知器,以及Spring如何通过JDK动态代理和CGLIB生成AopProxy,详细阐述了AOP拦截器链的调用过程和通知的实现。
摘要由CSDN通过智能技术生成

目录

Advice通知

Pointcut方法的横切面

Advisor通知器

Spring AOP实现

ProxyFactoryBean

为配置的target生成AopProxy代理对象

初始化Advisor链

生成单例代理对象

JDK动态代理生成AopProxy代理对象

CGLIB生成AopProxy代理对象

Spring AOP拦截器调用的实现

JdkDynamicAopProxy的invoke() 拦截

CglibAopProxy的intercept()拦截

目标对象中目标方法的调用

AOP拦截器链的调用

配置通知器

Advice通知的实现

JDK动态代理的实现

Spring AOP如何生效


Advice通知

定义了切面的增强方式,前置增强BeforeAdvice,后置增强 AfterAdvice,异常增强ThrowsAdvice 等。下面看两个主要的子接口的源码。

public interface MethodBeforeAdvice extends BeforeAdvice {

    /**
     * 目标方法 method 开始执行前,AOP 会回调此方法
     */
    void before(Method method, Object[] args, Object target) throws Throwable;
}

public interface AfterReturningAdvice extends AfterAdvice {

    /**
     * 目标方法 method 执行后,AOP 会回调此方法,注意,它还传入了 method 的返回值
     */
    void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼整理说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值