SpringBoot动态代理配置说明

基于CGLIB的代理与基于JDK的动态代理实现的声明式事务的区别
  • CGLIB基于继承实现,JDK动态代理基于实现接口实现
  • CGLIB的代理类需要事务注解@Transactional标注在类上(或方法);而JDK动态代理类事务注解@Transactional可以标注在接口上(或方法),也可以标注在实现类上(或方法)

配置项 spring.aop.auto&spring.aop.proxy-target-class&@EnableTransactionManagement(proxyTargetClass = true)

autoproxy-target-classproxyTargetClass代理技术备注
truefalsefalseJDK动态代理
truetruefalseCGLIB默认值
truefalsetrueCGLIB
truetruetrueCGLIB
falsefalsefalseJDK动态代理
falsetruefalseJDK动态代理
falsefalsetrueCGLIB
falsetruetrueCGLIB
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐