spring aop默认使用JDK还是Cglib动态代理?
一般情况:实现接口类,接口类为JDK ,实现类为Cglib动态代理
springboot2.x默认使用的代理是cglib代理
实现原理:
spring.aop.proxy-target-class属性值为true 调用cglib
自动配置,默认是true
但是有一情况况例外:
存在@EnableAsync和@EnableCaching,默认 spring.aop.proxy-target-class属性值为false
示例代码:
testService存在@Async注解,这样spring.aop.proxy-target-class属性值为false和ITestService为接口类,则使用JDK动态注解
test1Service为接口类和test1ServiceImpl为实现类,没有@Async注解,则使用的是Cglib动态代理