spring开启AOP功能分析:





到这里我们看出了关键,开始Spring AOP功能就是因为往容器加入了一个bean,那就去看看这个类有什么东西







上面存在短路的问题。如果是基础类就不做后面的判断了,如果不是基础类才判断是不是@Aspect标注的类


如果是基本类型和Aspect注解的类型那么就执行下面的逻辑:


到这里就直接返回 保存需要被代理的对象的信息






代理对象的创建是在后面这个方法创建的:
当存在注入的是一个代理对象的时候,这个时候的earlyProxyReferences中就会用对象,这是在bean对象加入缓存的时候就通过getObject方法设置好的



aop的执行顺序示例:




到这里这个对象能够使用的增强器,方便后面生成代理对象



到这里代理对象已经生成成功下面就是代理对象的方法调用顺序:





aop 实现多数据源的扩展插件:https://gitee.com/L211329/multiple_datasource
网友评论