spring aop默认使用JDK还是Cglib动态代理?

一般情况:实现接口类,接口类为JDK ,实现类为Cglib动态代理

springboot2.x默认使用的代理是cglib代理

实现原理:

    spring.aop.proxy-target-class属性值为true 调用cglib

springboot中spring aop实现的动态代理-cglib和JDK

 

 自动配置,默认是true

但是有一情况况例外:

  存在@EnableAsync和@EnableCaching,默认 spring.aop.proxy-target-class属性值为false

springboot中spring aop实现的动态代理-cglib和JDK

 

springboot中spring aop实现的动态代理-cglib和JDK

 

 示例代码:

springboot中spring aop实现的动态代理-cglib和JDK

 

testService存在@Async注解,这样spring.aop.proxy-target-class属性值为false和ITestService为接口类,则使用JDK动态注解

springboot中spring aop实现的动态代理-cglib和JDK

 

 

test1Service为接口类和test1ServiceImpl为实现类,没有@Async注解,则使用的是Cglib动态代理

 springboot中spring aop实现的动态代理-cglib和JDK

 

 

 

 

 

 

相关文章:

  • 2022-12-23
  • 2021-11-02
  • 2022-12-23
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-17
  • 2021-07-12
  • 2021-12-22
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2019-09-25
相关资源
相似解决方案