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

 

 

猜你喜欢

转载自www.cnblogs.com/mufeng07/p/12421718.html