目标类
这是个问句。。
就是不用配置<aop:aspectj-autoproxy proxy-target-class="true"/>springboot也默认是cglib
我截图了,我的最新评论就是答案
我也发现是这样的,不管有没有实现接口,都会创建CGLIB代理对象,怎么解?
spring 处理机制好像是,如果被代理类至少实现了一个接口那就使用jdk的代理,如果没有实现接口就使用cglib
还是多了解一下两者的区别吧,效率问题不能忽略啊
此springboot版本为2.0.1
默认为true了
当然了,CGLIB 使用的 不是 JDK的 Proxy,所以 Proxy.isProxyClass 返回false。
targetClass 如果是一个接口,这不D炸天了么,虽然JDK8 有个 接口默认实现方法(default),一个接口怎么可能直接实例化,被实例化的都必须是class啊。
那样spring的上下文里会存在这个接口对应的代理类和这个实现类的代理类么?
看来不是对接口的代理,而是对其实现类的代理
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(11)
这是个问句。。
就是不用配置<aop:aspectj-autoproxy proxy-target-class="true"/>
springboot也默认是cglib
我截图了,我的最新评论就是答案
我也发现是这样的,不管有没有实现接口,都会创建CGLIB代理对象,怎么解?
spring 处理机制好像是,如果被代理类至少实现了一个接口那就使用jdk的代理,如果没有实现接口就使用cglib
还是多了解一下两者的区别吧,效率问题不能忽略啊
此springboot版本为2.0.1
默认为true了
当然了,CGLIB 使用的 不是 JDK的 Proxy,所以 Proxy.isProxyClass 返回false。
targetClass 如果是一个接口,这不D炸天了么,虽然JDK8 有个 接口默认实现方法(default),一个接口怎么可能直接实例化,被实例化的都必须是class啊。
那样spring的上下文里会存在这个接口对应的代理类和这个实现类的代理类么?
看来不是对接口的代理,而是对其实现类的代理