SpringBoot动态代理配置说明
基于CGLIB的代理与基于JDK的动态代理实现的声明式事务的区别
- CGLIB基于继承实现,JDK动态代理基于实现接口实现
- CGLIB的代理类需要事务注解
@Transactional标注在类上(或方法);而JDK动态代理类事务注解@Transactional可以标注在接口上(或方法),也可以标注在实现类上(或方法)
配置项
spring.aop.auto&spring.aop.proxy-target-class&@EnableTransactionManagement(proxyTargetClass = true)
| auto | proxy-target-class | proxyTargetClass | 代理技术 | 备注 |
|---|---|---|---|---|
| true | false | false | JDK动态代理 | |
| true | true | false | CGLIB | 默认值 |
| true | false | true | CGLIB | |
| true | true | true | CGLIB | |
| false | false | false | JDK动态代理 | |
| false | true | false | JDK动态代理 | |
| false | false | true | CGLIB | |
| false | true | true | CGLIB |












网友评论