`

spring事务配置方法(BeanNameAutoProxyCreator)

阅读更多

采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统自动创建。容器中的目标bean自动消失,避免需要使用嵌套bean来保证目标bean不可被访问。
这种配置方式依赖于Spring提供的bean后处理器,该后处理器用于为每个bean自动创建代理,此处的代理不仅可以是事务代理,也可以是任意的代理,只需要有合适的拦截器即可。这些是AOP框架的概念,笔者在此处不对AOP进行深入介绍。读者只需了解这种事务代理的配置方式即可。
下面是采用BeanNameAutoProxyCreator配置事务代理的配置文件:

 

Xml代码
  1. <?xml version="1.0" encoding="gb2312"?>
  2. <!-- Spring配置文件的文件头,包含DTD等信息-->
  3. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  4. "http://www.springframework.org/dtd/spring-beans.dtd">
  5. <beans>
  6. <!--定义数据源-->
  7. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  8. <!-- 定义数据库驱动-->
  9. <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
  10. <!-- 定义数据库url-->
  11. <property name="url"><value>jdbc:mysql://localhost:3306/spring</value></property>
  12. <!-- 定义数据库用户名-->
  13. <property name="username"><value>root</value></property>
  14. <!-- 定义数据库密码-->
  15. <property name="password"><value>32147</value></property>
  16. </bean>
  17. <!--定义一个hibernate的SessionFactory-->
  18. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  19. <!-- 定义SessionFactory必须注入DataSource-->
  20. <property name="dataSource"><ref local="dataSource"/></property>
  21. <property name="mappingResources">
  22. <list>
  23. <!--以下用来列出所有的PO映射文件-->
  24. <value>Person.hbm.xml</value>
  25. </list>
  26. </property>
  27. <property name="hibernateProperties">
  28. <props>
  29. <!--此处用来定义hibernate的SessionFactory的属性:
  30. 不同数据库连接,启动时选择create,update,create-drop-->
  31. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  32. <prop key="hibernate.hbm2ddl.auto">update</prop>
  33. </props>
  34. </property>
  35. </bean>
  36. <!-- 定义事务管理器,使用适用于Hibernte的事务管理器-->
  37. <bean id="transactionManager"
  38. class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  39. <!-- HibernateTransactionManager bean需要依赖注入一个SessionFactory bean的引用-->
  40. <property name="sessionFactory"><ref local="sessionFactory"/></property>
  41. </bean>
  42. <!-- 配置事务拦截器-->
  43. <bean id="transactionInterceptor"
  44. class="org.springframework.transaction.interceptor.TransactionInterceptor">
  45. <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
  46. <property name="transactionManager" ref="transactionManager"/>
  47. <property name="transactionAttributes">
  48. <!-- 下面定义事务传播属性-->
  49. <props>
  50. <prop key="insert*">PROPAGATION_REQUIRED</prop>
  51. <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
  52. <prop key="*">PROPAGATION_REQUIRED</prop>
  53. </props>
  54. </property>
  55. </bean>
  56. <!-- 定义BeanNameAutoProxyCreator,该bean是个bean后处理器,无需被引用,因此没有id属性
  57. 这个bean后处理器,根据事务拦截器为目标bean自动创建事务代理
  58. <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  59. 指定对满足哪些bean name的bean自动生成业务代理 -->
  60. <property name="beanNames">
  61. <!-- 下面是所有需要自动创建事务代理的bean-->
  62. <list>
  63. <value>personDao</value>
  64. </list>
  65. <!-- 此处可增加其他需要自动创建事务代理的bean-->
  66. </property>
  67. <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
  68. <property name="interceptorNames">
  69. <list>
  70. <value>transactionInterceptor</value>
  71. <!-- 此处可增加其他新的Interceptor -->
  72. </list>
  73. </property>
  74. </bean>
  75. <!--定义DAO Bean ,由于BeanNameAutoProxyCreator自动生成事务代理-->
  76. <bean id="personDao" class="lee.PersonDaoHibernate">
  77. <property name="sessionFactory"><ref local="sessionFactory"/></property>
  78. </bean>
  79. </beans>
分享到:
评论
2 楼 gab26 2011-03-15  
  • 1
  • 2
  • 3
1 楼 gab26 2011-03-15  

相关推荐

    Spring + Hibernate + Struts 事务配置小例子(带提示框等小技巧)

    前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...

    Spring.3.x企业应用开发实战(完整版).part2

    10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言...

    spring in action英文版

     5.1.2 理解Spring对事务管理的支持  5.1.3 介绍Spring的事务管理器  5.2 在Spring中编写事务  5.3 声明式事务  5.3.1 理解事务属性  5.3.2 声明一个简单的事务策略  5.4 通过方法名声明事务 ...

    Spring3.x企业应用开发实战(完整版) part1

    10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接泄漏 10.7.1 底层连接资源...

    struts spring hibernate完整环境配置

    本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...

    struts spring hibernate完整环境配置4/4

    本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...

    struts spring hibernate完整环境配置3/4

    本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...

    spring学习笔记

    Spring的Ioc Spring的AOP , AspectJ Spring的事务管理 , 三大框架的整合 目录 1.1 Spring 框架学习路线:..........................................................................................................

Global site tag (gtag.js) - Google Analytics