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事务的具体实现方式未知,因此推荐把注解加在实现类上,不然会带来很多的问题。
Spring声明式事务的实现方式选择(JDK动态代理与cglib)的更多相关文章
- Spring声明式事务的配置方式
1.事务的特性 原子性:事务中的操作是不可分割的一部分 一致性:要么同时成功,要么同时失败(事务执行前后数据保持一致) 隔离性:并发互不干扰 持久性:事务一旦被提交,它就是一条持久 ...
- Spring声明式事务如何选择代理方式?
Spring声明式事务如何选择代理方式 解决方法: 1.基于注解方法: <tx:annotation-driven transaction-manager="txManager&q ...
- Spring声明式事务(xml配置事务方式)
Spring声明式事务(xml配置事务方式) >>>>>>>>>>>>>>>>>>>& ...
- Spring声明式事务管理(基于注解方式实现)
----------------------siwuxie095 Spring 声明式事务管理(基于注解方式实现) 以转 ...
- Spring声明式事务管理(基于XML方式实现)
--------------------siwuxie095 Spring 声明式事务管理(基于 XML 方式实现) 以转账为例 ...
- XML方式实现Spring声明式事务管理
1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...
- Spring声明式事务的两种配置方式(注解/xml)
application配置tx:annotation-driven 配置声明式事务tx:TransactionManager 声明式事务需要数据源所以需要配置DataSource 使用:在类或者方法上 ...
- spring声明式事务管理总结
事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...
- Spring声明式事务配置管理方法
环境配置 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可.添加方法: 点击项目右键->Build Path->Add ...
随机推荐
- JAVA设计模式之迭代器设计模式
一.迭代器模式简介 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式. 二.迭代器模式的角色与职 ...
- JS数组 Array
1.创建数组 var array=new Array(); 2.添加数组 array.push("111"); array.push("111"); array ...
- js 邮箱,手机电话验证
var mail=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; var tel=/^(\d3,4|\d{3,4} ...
- onethink后台代码简单分析(1)
onethink后台的入口页面同样是Index/index控制器 首先,Index继承了AdminController,AdminController有一个_initialize函数,这是所有后台运行 ...
- JSTL标签的用法详解
在JSP中写Java代码是一件很恶心的事情,代码量少的话还可以,要是多的话,就蛋疼了,整个页面都是<% %>所以EL表达式和JSTL就应运而生了,这里我们注重讲解一下JSTL标签的使用: ...
- Linux下安装PHP的curl扩展
先安装依赖包: yum install curl curl-devel 找到PHP的安装包,cd 进入安装包 cd php-5.6.25/ext/curl phpize 如果报找不到phpize就补全 ...
- hive建模方法
转自:https://www.jianshu.com/p/8378b80e4b21 概述数据仓库这个概念是由 Bill Inmon 所提出的,其功能是将组织通过联机事务处理(OLTP)所积累的大量的资 ...
- NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突【转载】
文章出自https://blog.csdn.net/qq_41843732/article/details/91422764 在UG二次开发中,若使用MFC库,一旦加上#include<Afx. ...
- ICPC Asia Nanning 2017 L. Twice Equation (规律 高精度运算)
题目链接:Twice Equation 比赛链接:ICPC Asia Nanning 2017 Description For given \(L\), find the smallest \(n\) ...
- position:relative/static/fixed/absolute定位的区别以及使用场景
absolute是相对于自己最近的父元素来定位的,relative是相对于自己来定位的 relative 不脱离文档流,absolute 脱离文档流.也就是说:relative 的元素尽管表面上看到它 ...