SpringAOP原理源码分析上

本文探讨了面向切面编程(AOP)如何解决横切性问题,将这些与业务逻辑分离以提高代码可维护性。通过JDK和Cglib动态代理的示例,解释了AOP在Spring框架中的应用。强调了Cglib在类未实现接口时的代理作用,并简要提及了Spring中动态切换代理类型的方式。
摘要由CSDN通过智能技术生成

本来写者写好发布了,结果没有发出去,吐槽一下!!!
前言:与OOP开发中的代码逻辑对比,在这些之上而下的过程中会产生写横切性问题而这些横切问题与我们逻辑业务员关系不大,会散落在代码各个地方,造成难以维护。
AOP的编程思想就是把这些横向问题和主业务逻辑分开,从而解耦。

有个问题:
在这里插入图片描述写者回答一下init才是代理发生。

上代码:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要是测试代码运行时间就会暴露出:与OOP开发中的代码逻辑对比,在这些之上而下的过程中会产生写横切性问题而这些横切问题与我们逻辑业务员关系不大,会散落在代码各个地方,造成难以维护等问题。

下面AOP登场:
1.添加依赖…写者懒就省略辽:
在这里插入图片描述
debug(建议用idea debug):
在这里插入图片描述可以看到是动态代理改一点就会成为Cglib;
在这里插入图片描述注解源码:
在这里插入图片描述
这里也可以更换;

原理:
两种代理区别:在Spring Framework都用到了,JDK动态代理只能针对已经实现了接口的类,Cgilb动态代理针对类实现代理在内存上动态生成一个子类,子类继承当前类,子类覆盖当前类的方法,在Spring里面两者都用到了,spring中如何动态切换这两种代理?在代理Bean时首先看是否实现一个接口,实现了接口的情况下spring会使用JDK动态代理,一个类没有实现接口会使用Cglib动态代理,在spring中可以指定配置文件强制使用Cglib动态代理,Cglib性能会高一点,Cgilb底层asm字节码技术;

源码分析:
在这里插入图片描述从头看到尾三天三夜也不行。

设置dubug(强烈用idea):
在这里插入图片描述
核心源码:
在这里插入图片描述
判断一个类没有实现接口会使用Cglib动态代理(对照写者上面发的原理来看);在这里插入图片描述

springioc的过程;

因本人谈恋爱了(要哄老婆),下会详解源码(读者可以对照写者发的原理和源码来debug)!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值