使用的代码地址:https://github.com/mxsm/spring-sample/tree/spring-5.3.x/spring-proxyy
第一种情况:
第二种情况:
第三种情况:
第一个是普通春季应用中最常见的。这是最常见的使用方式。
第二个是使用注释打开弹簧AOP。
第三次使用,您会发现并使用CGLIB代理
现象的摘要:如果没有AOP,就不会创建代理。当使用默认值时,接口的代理使用JDK代理实现,并且类代理的代理(JDK无法实现class Proxy)。Force使用CGLIB代理。
3.1将使用代理类使用先前的“春季AOP源代码分析”。众所周知,在注释方法下,AOP创建AOP的主要类是:,此类重写和两种方法:
initbeanfactory方法:
功能:
Findcandidateadvisors:
功能:
提示:上面的第二类和第三种类型是通过自己定义的顾问来实现的。例如:弹簧注释: @transactional(交易管理注释)。如果您很麻烦,您也可以使用此注释或其他AOP注释来观察在三个情况下。
因此,从上面的代码中,您可以查看是否使用代理查看是否打开弹簧AOP,同时是否相应的类是否包含需要处理AOP的逻辑。例如,上述定义注释或相关解决方案。
3.2如何选择JDK代理和CGLIB代理强制使用CGLIB代理。但是默认情况是什么,让我们根据源代码进行分析。创建代理类时,方法:方法: