首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring AOP分析(2) -- JdkDynamicAopProxy实现AOP

如果代理对象是接口类型,则生成JdkDynamicAopProxy代理;否则生成ObjenesisCglibAopProxy代理,ObjenesisCglibAopProxy代理是继承于CglibAopProxy...下面先从熟悉的入手,选择JdkDynamicAopProxy分析。 构造器 查看源码,可以看到JdkDynamicAopProxy是一个final类,不能被继承和实现。...其实现了AopProxy, InvocationHandler, Serializable接口,如下所示: final class JdkDynamicAopProxy implements AopProxy..., InvocationHandler, Serializable 下面看看JdkDynamicAopProxy 构造器,源码如下: public JdkDynamicAopProxy(AdvisedSupport...JdkDynamicAopProxy 是final类并且实现了InvocationHandler 接口,那么也必然实现了invoke方法,其源码如下: @Override public

1.4K00
您找到你想要的搜索结果了吗?
是的
没有找到

Spring AOP分析(1) -- 基本概念

代理对象中包括增强方法和被代理对象 下面简单了解下Spring AOP中核心的接口类 InvocationHandler 接口,从字面不难理解是调用处理器的意思,该接口是一个祖宗级接口,大多动态代理接口都会实现它,如JdkDynamicAopProxy...只有三个实现类CglibAopProxy、JdkDynamicAopProxy、ObjenesisCglibAopProxy,接口内部只定义了两个方法 Object getProxy(); Object...DefaultAopProxyFactory实现了接口中的createAopProxy方法,定义了何时使用JdkDynamicAopProxy、何时使用ObjenesisCglibAopProxy代理。...if (targetClass.isInterface() || Proxy.isProxyClass(targetClass)) { return new JdkDynamicAopProxy...} return new ObjenesisCglibAopProxy(config); } else { return new JdkDynamicAopProxy

69300

Spring动态代理的生成-如何判断是使用JDK动态代理还是CGlib代理

/ 先获取 AOP 代理工厂,默认为 DefaultAopProxyFactory,只有这个实现 // 然后通过它根据创建当前 AdvisedSupport 配置管理器创建一个 AOP 代理(JdkDynamicAopProxy...proxy creation."); } // 如果目标类是一个接口或者是 java.lang.reflect.Proxy 的子类 则还是使用 JDK 动态代理,创建一个 JdkDynamicAopProxy...if (targetClass.isInterface() || Proxy.isProxyClass(targetClass)) { return new JdkDynamicAopProxy...配置管理器,并返回 return new ObjenesisCglibAopProxy(config); } else { // 使用 JDK 动态代理,创建一个 JdkDynamicAopProxy...对象,传入 AdvisedSupport 配置管理器,并返回 return new JdkDynamicAopProxy(config); } } 源码分析 在这个DefaultAopProxyFactory

24520
领券