Spirng 痛苦源码学习(四)——AOP老大哥


前言

Spring的两大特性:IOC;AOP。本篇仅以跟完Spring AOP相关源码为依据写的总结


一、探究AOP开始,判断导入的相关组件

对于Spring来说,大部分的整合其实就是在容器中导入相关组件,然后通过前置或者后置处理器去干预我们的相关流程。

1.跟踪源码流程

AOP导入的组件AnnotationAwareAspectJAutoProxyCreator

在这里插入图片描述


二、对切面中的增强方法进行增强

这里是通过反射获取对应切面类中的方法,ReflectionUtils.doWithMethods(aspectClass, methods::add, adviceMethodFilter);所有方法(包括obj的方法),判断那些是增强方法(通过注解来判断如@Before)

1.源码的过程

注意点:

  1. 反射工具可学习一下Spring的源码ReflectionUtils
  2. 切面和增强方法都会放在缓存池中(Map)Spring底层常用的就是缓存池
  3. 站在开发者的角度出发其实很多底层的思维都差不多,就是通过反射拿到切面类中的方法,然后通过遍历的方法来判断注解,判断是不是需要对方法进行增强
  4. 增强方法完成后,我们拿到代理对象,然后会将对应的增强器中的方法转化成对应的拦截器去实现AOP
    在这里插入图片描述

三、使用aop的目标类生成代理对象

代理设计模式:
在这里插入图片描述


总结

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值