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

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动态代理

 

 

 

 

 

 

 

posted @ 2020-03-05 18:13  mufeng07  阅读(2401)  评论(0编辑  收藏  举报