- 浏览: 6346958 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
声明式事务
声明式事务(Programmatic transaction management)是Spring提供的对程序事务管理的方式之一。
Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中申明 。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中 ,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便。
Spring使用AOP来完成声明式的事务管理 ,因而声明式事务是以方法为单位,Spring的事务属性自然就在于描述事务应用至方法上的策略,在Spring中事务属性有以下四个参数:
1.传播行为
2.隔离级别
3.只读提示
4.事务超时期间
来自:百度百科
Spring 中进行事务管理的通常方式是利用AOP(面向切片编程)的方式,为普通java类封装事务控制,它是通过动态代理实现的,由于接口是延迟实例化的, spring在这段时间内通过拦截器,加载事务切片。原理就是这样。
Spring没有直接管理事务,它有许多供选择的事务管理器,将事务管理的责任委托给某个特定平台的事务实现。
每个事务管理器都充当了对特定平台的失误实现的代理。这样就只需与Spring中的事务打交道,而不用关心实际上事务实现是什么样的。
Spring中的声明式事务,需用到TransactionProxyFactoryBean
声明式事务管理的配置方式,通常有如下三种:
1.使用TransactionProxyFactoryBean为目标bean生成事务代理的配置。此方式是最传统,配置文件最臃肿、难以阅读的方式。
2.采用bean继承的事务代理配置方式,比较简洁,但依然是增量式配置。
3.使用BeanNameAutoProxyCreator,根据bean name自动生成事务代理的方式,这是直接利用Spring的AOP框架配置事务代理的方式,需要对Spring的AOP框架有所理解。但这种方式避免了增量式配置,效果非常不错。
4.DefaultAdvisorAutoProxyCreator:这也是直接利用Spring的AOP框架配置事务代理的方式,效果也非常不多,只是这种配置方式的可读性不如第三种方式。
http://zfsn.iteye.com/blog/663952
http://blog.csdn.net/hangke/archive/2007/12/05/1917904.aspx
TransactionProxyFactoryBean是什么时候被实例化的?它的实例在哪里被使用?是如何使用的?有何具体行为?
问题1:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求的时候被实例化的,其实这也就是所谓的反向控制(你叫它依赖注入也行)。
问题2:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求的时候被使用。
问题3:TransactionProxyFactoryBean在拦截器成功拦截到数据库请求后,会自动将该数据库操作加上事务控制。
问题3:成功时提交事务,失败时回滚事务。
<!-- 定义TransactionProxyFactoryBean,该bean是个bean后处理器,无需被引用,因此没有id属性-->
<bean class="org.springframework.aop.framework.autoproxy.TransactionProxyFactoryBean">
<!-- 指定对满足哪些bean name的bean自动生成业务代理 -->
<property name="beanNames">
<!-- 下面是所有需要自动创建事务代理的bean-->
<list>
<value>*Dao</value>
</list>
<!-- 此处可增加其他需要自动创建事务代理的bean-->
</property>
<!-- 下面定义TransactionProxyFactoryBean所需的事务拦截器-->
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
<!-- 此处可增加其他新的Interceptor -->
</list>
</property>
</bean>
发表评论
-
AQS
2019-03-21 15:08 2075大白话聊聊Java并发面试问题之谈谈你对AQS的理解? ... -
如何避免死锁
2018-12-20 15:31 3387一句话一张图说明银行 ... -
CAS自旋锁
2018-12-20 11:12 1639我们常说的 CAS 自旋锁是什么 CAS与ABA问题 ... -
【一个故事讲清楚NIO+Netty线程模型】
2018-08-22 10:30 3326五种网络io模型 一个简单故事讲述NIO blo ... -
char/varchar/nvarchar的区别及其各自的使用场景
2018-08-20 10:58 2424MySQL数据库char与varchar ... -
MVCC
2018-08-20 10:34 3532轻松理解MYSQL MVCC 实现机制 1.1 什 ... -
【tomcat系统架构(一)】
2018-08-16 16:02 1562四图带你了解Tomcat系统架构——让面试官颤抖Tomca ... -
分布式ID的实现方式
2018-04-27 18:19 3658分布式ID方案有哪些以及各自的优劣势 分布式ID生成器解 ... -
分布式锁的实现方式
2018-04-27 15:35 1795分布式锁解决方案-头条 分布式锁三种实现方式-CSDN ... -
【学习升级路线2】
2018-04-26 13:43 796非技术问题 研究比较深入的领域有哪些 对业内信息的关注 ... -
【学习升级路线1】
2018-04-26 13:54 973思维的惰性 我30的 ... -
需学习东西(面试问题)-backup
2018-04-26 13:46 1466记2017.3.21阿里面试经历,java方向 历年阿里面 ... -
海量数据处理(3)—实例总结
2018-04-17 17:33 1588来源:https://blog.csdn.ne ... -
需学习东西(面试问题) -backup
2018-04-17 09:49 1515记2017.3.21阿里面试经历 ... -
海量数据处理(2)-算法总结
2018-03-16 09:38 2192经典问题分析 上千万or亿数据(有 重复),统计其中 ... -
大型网站应用之海量数据和高并发解决方案总结
2018-03-15 17:31 1321针对海量数据和高并发的主要解决方案 海量数据的解决方案: ... -
海量数据处理 - (top K问题)
2018-03-15 11:00 3781CSDN-海量数据处理博客 top K问题 ... -
TCP的拥塞机制
2018-03-15 10:16 1065TCP拥塞机制 拥塞的 ... -
选择排序+堆排序(选直堆)
2018-03-06 17:38 1728ava中的经典算法之选 ... -
插入排序+希尔排序(插直希)
2018-03-05 17:20 779插入排序算法详解及实现 排序算法总结之插入排序 ...
相关推荐
spring声明式事务实例 可复制修改使用。。。。。。。。。。
Spring 声明式事务处理 Spring 中的事务处理可以分为两种方式:声明式事务处理和编程式事务处理。声明式事务处理通过 AOP 的实现,把事务管理代码作为方面封装到业务代码中,使得事务管理代码和业务代码解藕。这...
文件名为`Spring声明式事务处理-1.mht`到`Spring声明式事务处理-5.mht`,通过阅读这些文件,你将能够深入理解Spring声明式事务处理的各个方面,包括配置、使用场景、最佳实践以及常见问题的解决方法。
在这个"spring声明式事务处理demo"中,我们将探讨如何在MyEclipse环境下实现这一功能。 首先,我们要理解Spring事务管理的两种主要方式:编程式事务管理和声明式事务管理。编程式事务管理通常通过AOP(面向切面编程...
Spring声明式事务配置管理方法
在"spring声明式事务管理配置方式"中,主要涉及到以下几个关键知识点: 1. **Spring事务管理器(Transaction Manager)**: - Spring支持多种事务管理器,如DataSourceTransactionManager(用于JDBC事务)和...
### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...
本文将深入探讨Spring声明式事务的实现机制、优缺点以及如何在实际项目中进行配置和使用。 1. **声明式事务管理概述** 声明式事务管理与编程式事务管理相对,后者需要开发者在代码中显式调用开始、提交、回滚等...
Spring 声明式事务和Spring 编程式事务
《Spring Boot多数据源(支持Spring声明式事务切换和回滚)》 Spring Boot多数据源技术是构建高效、灵活的多租户SaaS架构的关键。在本文中,我们将深入探讨如何实现动态数据源切换,支持Spring声明式事务管理,并讨论...
1. **配置Spring声明式事务**: 在Spring中,声明式事务管理依赖于AOP(面向切面编程)来实现。首先,需要配置一个事务管理器,通常使用`DataSourceTransactionManager`,它与数据源`dataSource`关联。然后,通过`...
Spring 声明式事务处理与多数据源支持 在大部分涉及到数据库操作的项目里面,事务控制、事务处理都是一个无法回避的问题。Spring 框架提供了声明式事务处理机制,使得业务代码中进行事务控制操作起来非常简单。只需...
Spring声明式事务管理是Spring框架中的一个重要特性,它允许开发者在不修改代码的情况下,通过配置来控制事务的边界。这种方式极大地简化了事务管理,使得事务处理与业务逻辑解耦,提高了代码的可维护性和可测试性。...
本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...
Spring声明式事务是Java开发中不可或缺的一部分,它利用Spring的AOP(面向切面编程)和代理机制,为开发者提供了一种简洁的方式来管理事务。在本文中,我们将深入探讨Spring声明式事务的工作原理,源码分析,以及...
本文主要探讨Spring声明式事务管理的配置,这是Spring提供的一种简便的事务管理方式,允许开发者在不编写任何事务管理代码的情况下实现事务控制。这种方式极大地提高了代码的可维护性和可读性。 首先,我们要理解...
1.本例子的使用了 ssh 框架 2.本例子DAO层 使用了 getHibernateTemplate 来实现数据的新增修改和删除 3.本例子使用了声明式...4.本例子提供了详细的使用方法,可以根据 readme.txt 来逐步的验证声明式事务是否起作用
一、Spring声明式事务管理 1. **什么是事务**:事务是数据库操作的基本单元,它保证了数据的一致性和完整性。一个事务中的所有操作要么全部成功,要么全部失败。 2. **事务特性**:事务通常遵循ACID原则,即原子性...