- 浏览: 29828 次
- 性别:
- 来自: 北京
最新评论
常用的SSH框架中,Spring往往配置HibernateTemplate和JdbcTemplate两种事务管理器,
1、配置好数据源;注入Dao和事务管理器
sessionFactory 注入 DAO
DAO注入Service
Service的代理对象注入action
Service的实现类,是service代理对象中的一个字段。
声明式事务组成:事务管理器 注入 事务通知,事务通知和切面联合组成声明式事务。
------------以下内容摘自百度文库---------------------
spring声明式事务总结
初学spring,笔记总结:
1:针对某个类的,可以用代理类方式管理事务:
此外还有:
annotation
全标签方式,参见另一个
word
文件,或网址:
http://lvqionghua.blog.163.com/blog/static/1852774201152234023736
/
4.
表达式描述
* com.guo.dao.*.*(..)
:第一个
*
表示任何返回值,第二个
*
表示任何类,第三个
*
表示任
何方法:见下描述
除了返回类型模式(上面代码片断中的
ret-type-pattern
),名字模式和参数模式以外,所有的部分都是可
选的。
返回类型模式决定了方法的返回类型必须依次匹配一个连接点。
你会使用的最频繁的返回类型模
式是
*
,它代表了匹配任意的返回类型。
一个全称限定的类型名将只会匹配返回给定类型的方法。名字
模式匹配的是方法名
。
你可以使用
*
通配符作为所有或者部分命名模式
。
参数模式稍微有点复杂
:
()
匹
配了一个不接受任何参数的方法,
而
(..)
匹配了一个接受任意数量参数的方法(零或者更多)。
模
式
(*)
匹配了一个接受一个任何类型的参数的方法。
模式
(*,String)
匹配了一个接受两个参数的
方法,第一个可以是任意类型,第二个则必须是
String
类型。
下面给出一些常见切入点表达式的例子。
任意公共方法的执行:
execution(public * *(..))
任何一个以
“set”
开始的方法的执行:
execution(* set*(..))
AccountService
接口的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
定义在
service
包里的任意方法的执行:
execution(* com.xyz.service.*.*(..))
定义在
service
包或者子包里的任意方法的执行:
execution(* com.xyz.service..*.*(..))
5.
注意:
运行期异常会发生回滚,普通异常不会回滚,仍可写入数据库
1、配置好数据源;注入Dao和事务管理器
sessionFactory 注入 DAO
DAO注入Service
Service的代理对象注入action
Service的实现类,是service代理对象中的一个字段。
声明式事务组成:事务管理器 注入 事务通知,事务通知和切面联合组成声明式事务。
------------以下内容摘自百度文库---------------------
spring声明式事务总结
初学spring,笔记总结:
1:针对某个类的,可以用代理类方式管理事务:
<!-- 下面是进行声明式事务管理的一个方法:代理类 --> <!-- 说明,通过设置代理类来管理事务,要指明目标类是什么,代理目标类设为true (1)代理类管理事务,需要 aopalliance.jar 和 cglib*.jar (2)代理类可以设置在DAO类上,也可以设置在service层的类上,看需求 (3)代理类设置后,就是目标类的子类,调用目标类的bean时,需要调用代理类的bean ,具体看本程序理解 如:如果代理类代理DAO类,则 messageSvc 的属性 messageDao 的 ref 应 messageDaoProxy (4)事务管理中,若发生运行期异常:RuntimeException() 则抛异常,且回滚,不写入数 据库,若发生普通异常,Exception()则抛异常,不会回滚,依然写入数据库 --> <bean id="messageSvcProxy" class="org.springframework.transaction.interceptor.TransactionPro xyFactoryBean"> <property name="transactionManager" ref="transactionManager"></property> <property name="target"> <ref local="messageSvc" /> </property> <property name="proxyTargetClass" value="true"></property> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> 2. 针对多个类,可使用AOP方式管理事务 <!-- 下面使用声明式事务管理另一方法:AOP的方式,上述方法只能管理一个类,此方法 可以批量管理事务 注意:需要加入 aspectJ 文件夹下的两个 jar包 --> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="do*" propagation="REQUIRED" /> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <!-- 哪些类的哪些方法参与事务 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.guo.dao.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" /> </aop:config> 3.声明式事务管理第三种方法:拦截器 <!-- 声明式事务管理的第三种方法:拦截器 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager" /> <!-- 配置事务属性 --> <property name="transactionAttributes"> <props> <prop key="do*">PROPAGATION_REQUIRED</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*Dao</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>
此外还有:
annotation
全标签方式,参见另一个
word
文件,或网址:
http://lvqionghua.blog.163.com/blog/static/1852774201152234023736
/
4.
表达式描述
* com.guo.dao.*.*(..)
:第一个
*
表示任何返回值,第二个
*
表示任何类,第三个
*
表示任
何方法:见下描述
除了返回类型模式(上面代码片断中的
ret-type-pattern
),名字模式和参数模式以外,所有的部分都是可
选的。
返回类型模式决定了方法的返回类型必须依次匹配一个连接点。
你会使用的最频繁的返回类型模
式是
*
,它代表了匹配任意的返回类型。
一个全称限定的类型名将只会匹配返回给定类型的方法。名字
模式匹配的是方法名
。
你可以使用
*
通配符作为所有或者部分命名模式
。
参数模式稍微有点复杂
:
()
匹
配了一个不接受任何参数的方法,
而
(..)
匹配了一个接受任意数量参数的方法(零或者更多)。
模
式
(*)
匹配了一个接受一个任何类型的参数的方法。
模式
(*,String)
匹配了一个接受两个参数的
方法,第一个可以是任意类型,第二个则必须是
String
类型。
下面给出一些常见切入点表达式的例子。
任意公共方法的执行:
execution(public * *(..))
任何一个以
“set”
开始的方法的执行:
execution(* set*(..))
AccountService
接口的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
定义在
service
包里的任意方法的执行:
execution(* com.xyz.service.*.*(..))
定义在
service
包或者子包里的任意方法的执行:
execution(* com.xyz.service..*.*(..))
5.
注意:
运行期异常会发生回滚,普通异常不会回滚,仍可写入数据库
发表评论
-
2019java面试题
2019-01-18 01:01 9551、Map: Map是一个接口,主要实现子类有Hash ... -
Properties文件读取操作
2017-12-20 15:36 616package com.cmccsi.framework.ut ... -
使用jquery的上传插件:ajaxfileupload.js实现excel文件上传
2017-11-24 13:00 4265最近做的一个使用jQuery提供的上传插件,上传excel文件 ... -
ajax发送请求到Spring MVC的Controller 返回json字符串乱码
2017-10-20 17:17 388copy地址:http://blog.csdn.net/dan ... -
为什么每次看了不就还会忘记?关于Struts1的知识。
2017-07-15 16:58 447同事二胎生儿子贺喜与领导升官:既有官运蓬,又有新儿喜。宾朋随喜 ... -
java中的Dae与Calendar
2016-11-28 14:37 606Date类 在JDK1.0中,Date类是唯一的一个代表时间的 ... -
后台调用http短信接口
2016-06-20 17:08 607两种方式,第一种只能用GET方式,POST方式会报 411错误 ... -
proxool连接池的一种配置方式
2016-06-16 15:00 699今天看一个旧系统的连接池配置文件,用的Struts1 : 1 ... -
java类中和js中Date类型数据的编辑实例
2016-02-22 18:00 473今天做一个页面的简单 ... -
关于spring在web.xml中的配置时用listerer和servlet的简述
2016-02-17 16:42 676今天在看一个视频项目时,web.xml中配置用的listene ... -
Java synchronized详解
2016-01-28 10:40 419转自:http://www.cnblogs.com/devin ... -
window.location.href用法
2015-08-18 17:32 868javascript中的location.href有很多种用 ... -
springMVC与struts2的区别 搜的
2015-07-11 17:25 465目前企业中使用SpringMvc的比例已经远远超过Struts ... -
转 java观察者模式
2015-07-11 17:06 455观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的 ... -
java: 关于反射
2015-07-11 13:52 371前段时间维护系统遇到的一个问题:在服务器上运行的程序有问题,本 ...
相关推荐
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原则,即原子性...