Spring中默认使用jdk代理还是cglib代理?

jdk代理(基于接口):如果目标实现了接口,那么默认使用jdk代理。
cglib代理(基于类):如果目标没有实现接口,那么默认使用cglib代理。

spring中的配置proxy-target-class 属性:
proxy-target-class:true 设置基于类的代理,cglib代理。
proxy-target-class:false 设置基于接口的代理,jdk代理,但如果目标没有实现接口,使用cglib代理。

如果当前类方法上有 @Cacheable @Transactional 注解或者 被aop加强的话 生成的是代理对象,具体哪种代理看上面的区分,如果没有上述条件的话那么创建的对象是 原始对象。

你可能感兴趣的:(Spring中默认使用jdk代理还是cglib代理?)