Spring中事务的XML方式[声明方式]
事务管理: 管理事务,管理数据,数据完整性和一致性
事务[业务逻辑] : 由一系列的动作[查询书价格,更新库存,更新余额],组成一个单元[买书业务],
当我们动作当中有一个错了,全错~
ACID
原子性 隔离性 一致性 持久性
注解方式配置事务[编程方式-->@代码]
1.Spring框架当中需要配置事务管理器--> JDBC[Mybatis] Hibernate JTA-->数据源
2.启动事务注解[特意说了,事务管理器的id]
3.事务注解--> 可以放置的位置:@Transaction 类或者方法上
- 类上放置注解 方法当中注解[reaonly=true]
- rollbakFor
- 传播性 7个 默认值
XML方式配置事务
<!--声明方式XML方式:完成事务的配置,需要使用到地方有AOP-->
<!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 定义哪些方法需要被事务管理器进行管理 --> <tx:advice id="serviceMethodAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 需要哪些方法是被监控,并且是有事务管理 --> <aop:config> <aop:pointcut expression="execution(* com..service.*Service.*(..))" id="servicePointCut"/> <!-- 代表的意思: service包下的说有类以Service结尾的类下的所有方法,都为只读状态 --> <aop:advisor advice-ref="serviceMethodAdvice" pointcut-ref="servicePointCut"/> </aop:config>

单元测试,推荐使用断言方式,需要再使用syso(alt+/)的输出方式
<!-- 定义哪些方法需要被事务管理器进行管理 --> <tx:advice id="serviceMethodAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 约定大于配置 --> <!-- 第一种配置方式 <tx:method name="*" read-only="true"/> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="insert*"/> <tx:method name="create*"/> <tx:method name="update*"/> <tx:method name="edit*"/> <tx:method name="mod*"/> <tx:method name="change*"/> <tx:method name="del*"/> <tx:method name="remove*"/> <tx:method name="cancel*"/> --> <!-- 第二种配置方式 --> <tx:method name="*" read-only="false" /> <tx:method name="get*" read-only="true"/> <tx:method name="load*" read-only="true"/> <tx:method name="list*" read-only="true"/> <tx:method name="find*" read-only="true"/> <tx:method name="sel*" read-only="true"/> <tx:method name="query*" read-only="true"/> </tx:attributes>
</tx:advice>
在这里想说的,帮助文档一定要看的!
重点: 绝对是个人的建议 RuntimeException默认是不受审查,也是rollBackFor的默认值,如果你再Service层或者Dao层对其进行捕获的话,那么一定要做处理 个人的建议为: service和Dao不管遇到什么请求你都处理往外抛, 处理都放置在Controller 关于异常尽量都是用继承RuntimeException,根据你的代码情况进行不同异常的封装
Spring中事务的XML方式[声明方式]的更多相关文章
- Spring中事务管理的两种方式
spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager.对于编程式事务 ...
- Spring中加载xml配置文件的六种方式
Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog 因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...
- Spring中三种配置Bean的方式
Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...
- JAVA高级架构师基础功:Spring中AOP的两种代理方式:动态代理和CGLIB详解
在spring框架中使用了两种代理方式: 1.JDK自带的动态代理. 2.Spring框架自己提供的CGLIB的方式. 这两种也是Spring框架核心AOP的基础. 在详细讲解上述提到的动态代理和CG ...
- spring对数据库的操作、spring中事务管理的介绍与操作
jdbcTemplate的入门 创建maven工程 此处省略 导入依赖 <!-- https://mvnrepository.com/artifact/org.springframework/s ...
- 04 Spring:01.Spring框架简介&&02.程序间耦合&&03.Spring的 IOC 和 DI&&08.面向切面编程 AOP&&10.Spring中事务控制
spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的A ...
- Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现
Spring中事务的使用示例.属性及使用中可能出现的问题 前言 本专题大纲如下: 对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细,本来是想在源码分析的文章中附带讲一讲事务使用中的 ...
- 【面试普通人VS高手系列】Spring中事务的传播行为有哪些?
一个工作了2年的粉丝,私信了一个比较简单的问题. 说: "Spring中事务的传播行为有哪些?" 他说他能记得一些,但是在项目中基本上不需要配置,所以一下就忘记了. 结果导致面试被 ...
- Spring中事务的5种属性总结
Sping的事务 和 数据库的事务是不同的概念,数据库的事务一般称为底层事务 Spring的事务是对这种事务的抽象 我称之为逻辑事务 Spring对事务的功能进行了扩展,除了基本的Isolation之 ...
随机推荐
- PatentTips - Supporting heterogeneous virtualization
BACKGROUND A virtual machine (VM) architecture logically partitions a physical machine, such that th ...
- ArcGIS api for javascript——图形-增加图形到地图
描述 本例展示了如何使用Draw工具栏在地图上描绘许多种类的几何体.ArcGIS JavaScript API包含工具栏. 工具栏不是一个在页面上自动地可见的用户界面组件.相反,工具栏是一个助手类,可 ...
- 减少UIViewController切换的耦合
我们一般切换UIViewController的时候用的是例如以下代码 #import "UIViewControllerDemo.h" UIViewControllerDemo * ...
- 彻底解决lazarus安装组件后烦人的编译时单元找不到的问题!
以安装indy为例 1/下载组件包, http://www.indyproject.org/Sockets/fpc/indy-10.2.0.3.zip 2/爆开放于C:\lazarus\compone ...
- net.sf.json Maven依赖配置
转自:https://blog.csdn.net/qq_36698956/article/details/80772984 今天搭框架开始实现前台的json了,于是逐个找适合的框架,发现要实现json ...
- codeforces 701 B. Cells Not Under Attack
B. Cells Not Under Attack time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- 分享js中 pageY = clientY + document.body.scrollTop 之间的关系
//这里没有考虑兼容ie模式下 兼容一般主流浏览器 var $1 = document.getElementById('main') $1.onclick = function(e){ console ...
- OPENCV(7) —— HighGUI
包括函数createTrackbar.getTrackbarPos.setTrackbarPos.imshow.namedWindow.destroyWindow.destroyAllWindows. ...
- Coderfroces 862 C. Mahmoud and Ehab and the xor
C. Mahmoud and Ehab and the xor Mahmoud and Ehab are on the third stage of their adventures now. As ...
- Js怎么获取DOM及获取浏览器的宽高?
在JavaScript中,经常会需要获取document文档元素,是HTML文档对象模型的缩写,HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法. ...