Spring中的TransactionProxyFactoryBean作用及配置(转)
问:
原文链接 http://blog.csdn.net/cpp_lzth/article/details/6551703
看AOP的时候发现spring中有个org.springframework.transaction.interceptor.TransactionProxyFactoryBean.还有这里为什么要配置这个类呢???
答:
- <!--设置数据源 -->
- <bean id= "dataSource " class= "org.springframework.jndi.JndiObjectFactoryBean ">
- <property name= "jndiName ">
- <value> <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>:comp/env/jdbc/ayoa </value>
- </property>
- </bean>
- <!--设置ibatis -->
- <bean id= "sqlMapClient " class= "org.springframework.orm.ibatis.SqlMapClientFactoryBean ">
- <property name= "configLocation ">
- <value> classpath:com/ayoa/bean/sqlmapdao/sql-map-config.xml </value>
- </property>
- <property name= "dataSource ">
- <ref bean= "dataSource "/>
- </property>
- </bean>
- <!--设置事务管理 -->
- <bean id= "TransactionManager " class= "org.springframework.jdbc.datasource.DataSourceTransactionManager ">
- <property name= "dataSource ">
- <ref bean= "dataSource "/>
- </property>
- </bean>
- <!--设置DAO -->
- <bean id= "VssDao " class= "com.wehave.hyerp.productmanage.persistence.sqlmapdao.VssSqlMapDao ">
- <property name= "sqlMapClient ">
- <ref bean= "sqlMapClient "/>
- </property>
- </bean>
- <!--业务层交给spring进行事务管理 -->
- <bean id= "VssService " class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean ">
- <property name= "transactionManager ">
- <ref bean= "TransactionManager "> </ref>
- </property>
- <property name= "target ">
- <bean class= "com.wehave.hyerp.productmanage.service.VssService ">
- <property name= "vssDao ">
- <ref bean= "VssDao "/>
- </property>
- </bean>
- </property>
- <property name= "transactionAttributes ">
- <props>
- <prop key= "insertVss "> PROPAGATION_REQUIRED </prop>
- </props>
- </property>
- </bean>
问:
这个跟直接把DAO交给控制层有什么区别???
为什么还要用TransactionProxyFactoryBean来包住DAO呢???
TransactionProxyFactoryBean又不是自己写的Manager类,又有何功能实现事务控制呢???
答:
配置这个类,是为了现宽广地实现事务的管理,也可以说是为了要和hibenate结合起来,TransactionProxyFactoryBean这个类一般有三个构造参数要注入,一个是hibernate的sessionFactory,这是为了spring可以和hibernate结合,第二个是用户的DAO类,而这个DAO类本身也需要把hibernate的sessionFactory作为构造参数注入到它的父类的构造函数中。第三个注入的,其实是事务管理的策略,通过AOP的方式实现的,例如DAO类中有有insert(String sql);update(String sql);delelte(String sql);三个方法,我们可以设定当insert执行时如果抛出异常,就执行rollback等操作。楼主对照rickhunterchen(千山鸟飞绝)的回贴,可以体现出我上面所说的东西。我明白这个原理,可是不知能否表达清楚。
Spring中的TransactionProxyFactoryBean作用及配置(转)的更多相关文章
- Spring 中bean的作用、定义
Spring 中bean的作用.定义: 创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的"配方(recipe)".把bean定义看成一个配方很有意义,它与cl ...
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forNam ...
- Spring 框架的概述以及Spring中基于XML的IOC配置
Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...
- Spring中FactoryBean的作用和实现原理
BeanFactory与FactoryBean,相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的.BeanFactory是Spring中Bean工厂的顶层接口, ...
- Spring中depends-on的作用是什么?
spring的IOC容器负责bean的管理,当实例化一个bean是,spring保证该Bean所依赖的其他bean已经初始化.一般情况下,用<ref>元素建立对其他bean的依赖关系. 比 ...
- spring中的Log4jConfigListener作用和webapp.root的设置
转:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好处: 1. 动 ...
- (4) Spring中定时任务Quartz集群配置学习
原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本. ...
- Spring中Druid链接池的配置
本文记录了使用Druid的方法, 包括Spring和Spring boot中使用Druid的配置方法. Spring中配置Druid连接池 以链接mysql为例 1 添加druid依赖 <dep ...
- spring中afterPropertiesSet方法与init-method配置描述
1. InitializingBean.afterPropertiesSet()Spring中InitializingBean接口类为bean提供了定义初始化方法的方式,它仅仅包含一个方法:after ...
随机推荐
- [HNOI2010]公交线路
题目 发现\(n\)比较大,但是\(k,p\)都很小,考虑矩乘使得复杂度倾斜一下 发现所有车的最大间隔都是\(p\),还保证\(k<p\),于是我们可以考虑压下最后\(p\)位的情况 于是设\( ...
- [POI2015]LOG
题目 发现询问是针对整个区间,也就是说位置什么用都没有 发现我们需要构造出\(s\)个长度为\(c\)的数列,每个数只能在一个数列中出现一次,且一个数最多的使用次数是其大小 对于那些大于等于\(s\) ...
- Inno Setup 安装
Inno Setup 安装 一.软件下载:http://www.jrsoftware.org/isdl.php#qsp 二.下载后,双击进行安装(包括inno Setup Compiler和Inno ...
- pwnhub_WTP攻击思路--self-xss高级利用
1.self-xss+302跳转构造csrf的利用: 1.login.php 存在跳转2.http://54.223.108.205:23333/login.php?redirecturl=//vps ...
- .net中使用mysql回滚和sqlserver回滚的区别
关于sqlserver事务和mysql事务 首先这是一种方法 public static int GetExecteQuery() { SqlConnection ...
- No.6 - 利用 CSS animation 制作一个炫酷的 Slider
*{ margin:; padding:; } div{ margin: auto; width: 800px; height: 681px; position: relative; overflow ...
- java的四舍五入
四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了.在讲解之间我们先看如下一个经典的案例: public static void main(String[] ...
- 解决Linux 安装python3 .5 解决pip 安装无法成功问题ssl安全拦截无法pip安装库问题
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not avail ...
- 错误的另一个常见原因是默认的安全组规则。default security group默认情况下不允许ICMP(ping命令使用的协议)
可以在openstack horizon界面中添加ICMP和ssh(TCP)规则,也可以通过命令行.命令行方式给默认安全组添加规则的方法如下: $ nova secgroup-add-rule def ...
- Kubernetes(一)--简介
一.什么是kubernetes(K8s)? Kubernetes作为容器编排生态圈中重要一员,是Google大规模容器管理系统borg的开源版本实现,吸收借鉴了google过去十年间在生产环境上所学到 ...