zoukankan      html  css  js  c++  java
  • Spring声明式事务的实现方式选择(JDK动态代理与cglib)

    • 1、简介

    Spring声明式事务的具体实现方式是动态决定的,与具体配置、以及事务代理对象是否实现接口等有关。

    • 2、使用JDK动态代理的情况

    在满足下面两个条件时,Spring会选择JDK动态代理作为声明式事务的实现方式。

    (1)事务代理类必须实现接口且不能显式继承父类(Object这个父类不算)。

    (2)配置:springboot的启动类要加上@EnableTransactionManagement和@EnableAspectAutoProxy注解,且其中的proxyTargetClass属性要为默认的fasle,如果设置成了true就会开启cglib。

    注意:

    在这种情况下,@Transcation注解可以加在事务代理对象所实现的接口的方法上,也可以加在具体的实现类上。

    • 3、使用cglib的情况

    除了上述情况,Spring 会采用cglib方式来实现声明式事务。

    (1)比如业务类未实现接口。

    (2)proxyTargetClass=true时。

    当然,在这种情况下,@Transcation注解只能加在具体的实现类上。

    由于Spring事务的具体实现方式未知,因此推荐把注解加在实现类上,不然会带来很多的问题。

  • 相关阅读:
    activity 背景透明
    win系统注册缺少的库 32位系统 64位系统
    android 窗
    wireshark抓包分析
    juqery select 标签
    IOS开发应用之Quartz 2D学习指南
    为什么你总会觉得自己的产品不够好
    日志宝
    Android之Inflate()方法用途+setContentView和inflate区别
    Ralasafe
  • 原文地址:https://www.cnblogs.com/MagicAsa/p/11749112.html
Copyright © 2011-2022 走看看