问:

原文链接 http://blog.csdn.net/cpp_lzth/article/details/6551703

看AOP的时候发现spring中有个org.springframework.transaction.interceptor.TransactionProxyFactoryBean.还有这里为什么要配置这个类呢???

答:

  1. <!--设置数据源   -->
  2. <bean   id= "dataSource "   class= "org.springframework.jndi.JndiObjectFactoryBean ">
  3. <property   name= "jndiName ">
  4. <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>
  5. </property>
  6. </bean>
  7. <!--设置ibatis   -->
  8. <bean   id= "sqlMapClient "   class= "org.springframework.orm.ibatis.SqlMapClientFactoryBean ">
  9. <property   name= "configLocation ">
  10. <value> classpath:com/ayoa/bean/sqlmapdao/sql-map-config.xml </value>
  11. </property>
  12. <property   name= "dataSource ">
  13. <ref   bean= "dataSource "/>
  14. </property>
  15. </bean>
  16. <!--设置事务管理   -->
  17. <bean   id= "TransactionManager "   class= "org.springframework.jdbc.datasource.DataSourceTransactionManager ">
  18. <property   name= "dataSource ">
  19. <ref   bean= "dataSource "/>
  20. </property>
  21. </bean>
  22. <!--设置DAO   -->
  23. <bean   id= "VssDao "   class= "com.wehave.hyerp.productmanage.persistence.sqlmapdao.VssSqlMapDao ">
  24. <property   name= "sqlMapClient ">
  25. <ref   bean= "sqlMapClient "/>
  26. </property>
  27. </bean>
  28. <!--业务层交给spring进行事务管理   -->
  29. <bean   id= "VssService "   class= "org.springframework.transaction.interceptor.TransactionProxyFactoryBean ">
  30. <property   name= "transactionManager ">
  31. <ref   bean= "TransactionManager "> </ref>
  32. </property>
  33. <property   name= "target ">
  34. <bean   class= "com.wehave.hyerp.productmanage.service.VssService ">
  35. <property   name= "vssDao ">
  36. <ref   bean= "VssDao "/>
  37. </property>
  38. </bean>
  39. </property>
  40. <property   name= "transactionAttributes ">
  41. <props>
  42. <prop   key= "insertVss "> PROPAGATION_REQUIRED </prop>
  43. </props>
  44. </property>
  45. </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作用及配置(转)的更多相关文章

  1. Spring 中bean的作用、定义

    Spring 中bean的作用.定义: 创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的"配方(recipe)".把bean定义看成一个配方很有意义,它与cl ...

  2. 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

    Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法    获取Class类实例的方法:   类名.class   实例名.getClass()   Class.forNam ...

  3. Spring 框架的概述以及Spring中基于XML的IOC配置

    Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...

  4. Spring中FactoryBean的作用和实现原理

    BeanFactory与FactoryBean,相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的.BeanFactory是Spring中Bean工厂的顶层接口, ...

  5. Spring中depends-on的作用是什么?

    spring的IOC容器负责bean的管理,当实例化一个bean是,spring保证该Bean所依赖的其他bean已经初始化.一般情况下,用<ref>元素建立对其他bean的依赖关系. 比 ...

  6. spring中的Log4jConfigListener作用和webapp.root的设置

    转:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好处:     1. 动 ...

  7. (4) Spring中定时任务Quartz集群配置学习

    原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本. ...

  8. Spring中Druid链接池的配置

    本文记录了使用Druid的方法, 包括Spring和Spring boot中使用Druid的配置方法. Spring中配置Druid连接池 以链接mysql为例 1 添加druid依赖 <dep ...

  9. spring中afterPropertiesSet方法与init-method配置描述

    1. InitializingBean.afterPropertiesSet()Spring中InitializingBean接口类为bean提供了定义初始化方法的方式,它仅仅包含一个方法:after ...

随机推荐

  1. [HNOI2006]马步距离

    嘟嘟嘟 这题首先直接bfs可定过不了,因此可以先贪心缩小两个点的距离,直到达到某一个较小的范围(我用的是30),再bfs暴力求解. 首先我们求出这两个点的相对距离x, y,这样就相当于从(x, y) ...

  2. 一步步入门编写PHP扩展

    1.写在最前 随着互联网飞速发展,lamp架构的流行,php支持的扩展也越来越多,这样直接促进了php的发展. 但是php也有脚本语言不可避免的问题,性能比例如C等编译型语言相差甚多,所以在考虑性能问 ...

  3. linux日志log查询常用命令

    一般的log文件都是需要过滤 1.grep 过滤查找 查询ip 221.2.100.138的log grep '221.2.100.138'  web.access.log grep 221.2.10 ...

  4. 非接触式读卡器13.56MHZ芯片:SI522

    对于现在的智能锁市场需求竞争极大,中小型厂家月销量更是在慢慢增长.刷卡功能更是智能锁的标配功能,当然13.56Mhz芯片现在讲究的就是超低功耗,为满足市场需求专注于物联网多年的中科微强力推出了13.5 ...

  5. 洛谷P2336 [SCOI2012]喵星球上的点名(后缀数组+莫队)

    我学AC自动机的时候就看到了这题,想用AC自动机结果被学长码风劝退-- 学后缀数组时又看到了这题--那就写写后缀数组做法吧 结果码风貌似比当年劝退我的学长还毒瘤啊 对所有的模式串+询问串,不同串之间用 ...

  6. Asp.net MVC使用FormsAuthentication,MVC和WEB API可以共享身份认证 (转载)

    在实际的项目应用中,很多时候都需要保证数据的安全和可靠,如何来保证数据的安全呢?做法有很多,最常见的就是进行身份验证.验证通过,根据验证过的身份给与对应访问权限.同在Web Api中如何实现身份认证呢 ...

  7. Mysql实现主从同步

    根据网上众多参考案例,继续在VM虚拟机里实现MySQL主从同步功能.步骤如下: * 首先明确下环境 主库本地windows ip192.168.0.103 从库虚拟机mysql5.6 ip192.16 ...

  8. 客户端对象模型之Excel数据导入到列表

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  9. [转载]Linux crontab命令解析

    名称 : crontab crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表.-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权 ...

  10. 建立复数类Complex,并且进行赋值,求和,取模等操作

    #include "pch.h" #include <iostream> #include<cmath> using namespace std; clas ...