`

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 事务(6中配置完全降解)

    本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring事务的运用。 1. **基于XML的事务配置** Spring支持通过XML配置来管理事务,这是最基础的配置方式。在`spring`的配置文件中,我们...

    spring 事务代理配置

    ### Spring事务管理——声明式事务配置详解 #### 引言 在现代的Java企业级应用开发中,事务处理是确保数据一致性和完整性的重要机制。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务管理方式。...

    Spring_Hibernate使用TransactionInterceptor声明式事务配置.doc

    在这篇文章中,我们将探讨使用Spring_Hibernate框架实现声明式事务配置的方法,具体来说,就是使用TransactionInterceptor来管理事务。在Spring框架中,事务管理器是核心组件之一,它负责管理事务的生命周期,包括...

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

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

    AOP usage -- BeanNameAutoProxyCreator usage

    **一、配置BeanNameAutoProxyCreator** 在Spring配置文件中,我们需要声明一个`BeanNameAutoProxyCreator` bean,并设置其属性。主要的属性有: 1. `proxyTargetClass`: 是否使用CGLIB代理,默认为false,如果设为...

    Spring实现自动代理Demo

    1. **配置BeanNameAutoProxyCreator** 在Spring的XML配置文件中,我们需要声明一个`BeanNameAutoProxyCreator` bean,并设置其属性。例如: ```xml &lt;bean id="proxyCreator" class="org.springframework.aop....

    Spring在Transaction事务传播行为种类

    ### Spring中的Transaction事务传播行为种类详解 #### 一、引言 在开发基于Spring框架的应用程序时,事务管理是确保数据一致性的重要手段之一。Spring框架提供了丰富的事务管理功能,其中包括了事务传播行为...

    spring1.2申明式事务.txt

    根据提供的文件信息,本文将详细解析Spring 1.2中声明式事务管理的相关知识点,包括其配置方式、工作原理以及如何在实际应用中实施。 ### Spring 1.2声明式事务简介 Spring框架中的声明式事务管理是通过AOP(面向...

    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.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配置文件

    通过以上配置,我们能够有效地在Spring环境中实现AOP,特别是针对事务管理这一场景的应用。这种方式不仅能够帮助我们更好地组织代码,还能提高程序的可维护性和可扩展性。同时,利用Spring框架的强大功能,我们能够...

    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 底层连接资源...

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    声明式事务可以通过配置文件或注解的方式来实现事务管理。例如,使用 @Transactional 注解来标注事务方法。 @Aspect 的拦截顺序问题 @Aspect 是 Spring 框架中提供的一种 Aspect-Oriented Programming(面向方面...

    struts spring hibernate完整环境配置

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

    spring代理详解.txt

    在Spring框架中,代理机制主要用于实现AOP(面向切面编程)功能,通过动态创建代理对象来拦截目标方法调用,从而实现如事务管理、日志记录、性能监控等横切关注点。 ### 1. ProxyFactoryBean `ProxyFactoryBean`是...

    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验证码等 ...

Global site tag (gtag.js) - Google Analytics