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 ...
随机推荐
- Kali-linux破解操作系统用户密码
当忘记操作系统的密码或者攻击某台主机时,需要知道该系统中某个用户的用户名和密码.本节将分别介绍破解Windows和Linux用户密码. 8.6.1 破解Windows用户密码 Windows系统的用户 ...
- ethereumjs/ethereumjs-block-3-tests
之前可以先了解一下另一个模块,看本博客的ethereumjs/ethereumjs-common部分内容 通过tests测试文件能够帮助更好了解API的使用 ethereumjs-block/test ...
- 知乎TensorFlow入门学习记录
知乎地址:https://zhuanlan.zhihu.com/p/30487008 import tensorflow as tf a=tf.placeholder(tf.int16) # 接受的数 ...
- ZCMU 2177 Lucky Numbers (easy)
传送门: http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=2177 2177: Lucky Numbers (easy) 时间限制: 2 Sec ...
- Boost noncopyable实现禁止拷贝的类
在C++中定义一个类,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译期会为我们自动生成这两个函数.但是我们有时又希望禁止拷贝类的实例,这时可以私有化拷贝构造函数和拷贝赋值操作符即可. class d ...
- windows设置控制台编码格式为UTF-8
1.运行CMD 2.输入CHCP查看当前编码格式. 3.输入 CHCP 65001设置编码方式为UTF-8 注意,到此处并没有完全修改,只是修改了当前页面,怎么完全修改? 4.右击控制台,选择属性: ...
- 【CSS-移动端响应式布局详解】
背景 移动端响应式布局开发主要方案有: 基于rem开发 基于媒体查询 基于弹性盒 基础概念 在讨论响应式布局知识前,先了解下移动端常用基础概念. 逻辑像素(CSS pixels) 浏览器使用的抽象单位 ...
- Java中的集合和常用类
Java中的常用类: ▪ Object类 ▪ Math类 ▪ String类和StringBuffer类(字符串) ▪ 8种基本类型所对应的包装类 ▪ java.util包中的类——Date类 Obj ...
- tomcat启动超时, Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...
本文转自于:http://www.cnblogs.com/yjhrem/articles/2955207.html
- iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况
1.自己先写一个 Demo 演示一下利用bugly测试崩溃的具体情况. 在ViewController里面实现崩溃代码如下: 运行后 毫无疑问程序报错了! 2.使用到第三方的框架Bugly,官方下载 ...