美文网首页
spring 事务几个注意点

spring 事务几个注意点

作者: EvilDjango | 来源:发表于2022-11-09 15:00 被阅读0次

    spring 事务的启用

    spring boot中使用注解@EnableTransactionManagement来启用事务

    事务aop代理方式的选择与配置

    我们知道,spring事务是基于aop来实现的,而spring的aop是基于动态代理,spring中的动态代理有两种方式,jdk动态代理和cglib动态代理。spring默认时用jdk代理,因为从jdk 1.8之后jdk动态代理的性能已经高于cglib。jdk代理和cglib代理各自有一些限制:jdk代理只能代理接口方法,cglib则只能代理可以被覆盖的方法。
    那么我们如何选择事务aop的代理方式呢?@EnableTransactionManagement注解有个参数,设置proxyTargetClass = true则表示强制使用cglib代理,否则默认使用jdk代理。

    spring和 jdk的@Transactional注解对比

    jdk中有一个javax.transaction.Transactional注解,spring中有一个org.springframework.transaction.annotation.Transactional注解,这两个注解是不是可以无差别使用呢?
    笔者在自己的机器上做了实验,结果是:使用cglib代理的时候,jdk的Transactional注解是可以生效的,而使用jdk代理的时候,jdk的Transactional注解是不生效的。自己兄弟不相认,很好笑。

    相关文章

      网友评论

          本文标题:spring 事务几个注意点

          本文链接:https://www.haomeiwen.com/subject/ladntdtx.html