`

spring配置事物的几种方法

阅读更多
方法一:
----------------------------------------------------------------------------------

<bean name="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
</bean>
<bean name="transactionProxyTemplate" abstract="true"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
<property name="target">
    <list>
    <ref bean="classService" /><!-- 要配置事物的Service或者DAO都配置到这里就OK了 -->
    <ref bean="userService" />
    </list>
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="modify*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
     <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
   </property>
</bean>

第二种方法:
----------------------------------------------------------------------------------

<bean name="transactionManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
    <ref bean="sessionFactory" />
   </property>
</bean>
<bean name="transactionProxyTemplate" abstract="true"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="modify*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
     <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
   </property>
</bean>

<bean name="classService" abstract="false" singleton="true"
   lazy-init="default" autowire="default" dependency-check="default"
  parent="transactionProxyTemplate"><!-- 哪个Service需要事物就配一个这样的Bean -->
   <property name="target">
   <bean class="su.service.impl.ClassServiceImpl">
     <property name="classDao">
      <ref bean="classDao" />
     </property>
    </bean>
   </property>
</bean>


方法三:
----------------------------------------------------------------------------------

为每一个需要事物的DAO配置一个代理Bean
<bean id="deptsortDAOProxy"
   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
   <property name="transactionManager">
    <ref bean="transactionManager" />
   </property>
   <property name="target">
   <ref bean="deptsortDAO" />
   </property>
   <property name="transactionAttributes">
    <props>
     <prop key="create*">PROPAGATION_REQUIRED</prop>
     <prop key="update*">PROPAGATION_REQUIRED</prop>
     <prop key="delete*">PROPAGATION_REQUIRED</prop>
     <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
   </property>
</bean>

Service配置的时候直接引用配置好的代理DAO

<bean id="deptsortService"
   class="com.oa.service.DeptsortServiceImpl">
   <property name="deptsortDAO">
    <ref bean="deptsortDAOProxy" />
   </property>
</bean>

 

分享到:
评论

相关推荐

    spring中事物配置

    Spring提供了几种事务通知类型,如`@Transactional`注解、`tx:advice`元素等。在XML配置中,我们可以使用`&lt;tx:advice&gt;`元素来定义一个事务通知: ```xml *" propagation="REQUIRED"/&gt; ``` 这里,`*`表示...

    spring-tx事物源码

    Spring的事务管理机制包括编程式事务管理和声明式事务管理,这两种方式都基于`spring-tx`模块。在这个源码中,我们可以深入理解Spring如何处理事务的生命周期、回滚规则以及与各种数据源的集成。 首先,`spring-tx`...

    Spring事务管理Demo

    在Spring事务管理Demo中,通常会包含以下几个步骤: 1. 配置事务管理器:在Spring的XML配置文件中,根据数据库类型(如JDBC、Hibernate、MyBatis等)配置相应的事务管理器。 2. 开启事务:使用`@Transactional`注解...

    spring ioc以及事物架构图

    **Spring事务管理主要涉及到以下几个概念:** - **TransactionDefinition**:事务定义接口,描述了事务的行为特征,如隔离级别、回滚规则等。 - **PlatformTransactionManager**:事务管理器接口,负责管理事务的...

    Spring中的@Transactional事物回滚实例源码

    在Spring中,可以通过以下几种方式配置事务管理: 1. **XML配置**:在Spring的配置文件中,使用`&lt;tx:annotation-driven&gt;`元素启用基于注解的事务管理。 2. **Java配置**:在@Configuration类中,使用@...

    spring自定义标签例子

    通过研究这个例子,我们可以学习到如何将业务逻辑抽象出来,封装成自定义标签,使Spring配置更加简洁。这对于大型项目来说尤其重要,因为它可以提高代码的可读性和模块化程度。 此外,理解自定义标签的工作原理还能...

    Springboot 动态多数据源 jta分布式事务

    配置多数据源通常涉及到以下几个步骤: 1. 引入依赖:在`pom.xml`或`build.gradle`文件中添加相应的数据库驱动依赖,如MySQL、Oracle等。 2. 配置数据源:创建多个DataSource Bean,每个Bean对应一个数据库连接配置...

    spring2.5参考手册

    在Spring 2.5版本中,主要包含了以下几个关键知识点: 1. **依赖注入**:这是Spring的核心特性之一。通过DI,Spring容器管理对象的生命周期和对象之间的关系,而不是由对象自己来管理。这减少了代码间的耦合度,...

    AOP实现自我调用的事物嵌套问题

    为了解决这个问题,有以下几种策略: 1. **避免自调用**:尽可能地设计系统,使得事务边界清晰,避免在一个类中进行自调用。可以通过服务层分离或者使用依赖注入来避免这种情况。 2. **显式调用代理**:在自调用时...

    java JSP开发之Spring中Bean的使用

    Spring中的Bean代表着应用中的对象,这些对象由Spring容器管理,提供了一种松耦合和依赖注入的机制。在本文中,我们将深入探讨Spring中Bean的生命周期以及如何创建和配置可被发现的Bean。 首先,让我们理解Spring中...

    maven springboot jta mybatis 分布式事物

    `Spring Boot` 是基于 Spring 框架的简化开发工具,它提供了一种快速构建独立的、生产级的基于 Spring 应用程序的方法。Spring Boot 自动配置了许多常见的 Spring 组件,比如数据源、缓存、日志等,并且内置了 ...

    Java面试框架高频问题2019

    - 在Spring配置文件中通过`&lt;bean&gt;`标签定义DataSource,配置JDBC连接参数,并指定具体的数据库驱动类。 **问题十:Spring里面applicationContext.xml文件能不能改成其他文件名?** - 可以,只要在启动类中通过`@...

    SpringCloud最新2021年面试题附答案解析,大汇总.md

    ### SpringCloud最新2021年面试题及答案解析 #### 1、什么是Hystrix断路器?...以上是对Spring Cloud中几个重要概念和技术点的详细介绍,希望能帮助大家更好地理解和掌握Spring Cloud的核心技术。

    事物管理javaweb.zip

    在"事物管理javaweb.zip"中,可能包含的详细内容有:JDBC事务示例代码、EJB事务配置、Spring事务管理的配置文件和注解使用、事务隔离级别的解释与选择、分布式事务的实现机制等。学习这些内容可以帮助开发者更好地...

    CGB_面试题_第三阶段(1).docx

    Spring 框架是一种基于 Java 的开源框架,提供了一个灵活、强大和可扩展的基础结构,用于构建企业级应用程序。下面是 Spring 框架中的一些关键概念和技术要点: 1. Spring Bean 容器 Spring Bean 容器是 Spring ...

    ssh2项目 实现登陆,crud操作,用aop控制事物

    - **依赖注入(DI)**:Spring可以通过XML配置或注解方式管理Bean,实现对象间的依赖关系。 - **事务管理**:Spring提供了声明式事务管理,可以通过AOP实现。在CRUD操作中,Spring能够确保数据的一致性,当出现异常...

    日电光学.doc

    ### Hibernate的几种检索方式 1. **查询语言检索**: - **HQL(Hibernate Query Language)**:这是一种面向对象的查询语言,它允许开发人员使用类名和属性名来构造查询语句。例如,`from Employee e where e....

    Java事物设计策略

    事务设计模式提供了一种结构化的方法来解决常见的事务处理问题。例如,“客户端所有者”模式适用于客户端负责发起和管理事务的情况;“领域服务所有者”模式则将事务责任分配给业务逻辑层的服务;“服务委托所有者”...

    hibernate源码分析一[启动过程]

    当Hibernate与Spring框架集成时,通常不再需要`hibernate.cfg.xml`文件,而是通过Spring的`FactoryBean`来动态加载和配置Hibernate,将配置信息和映射文件的加载过程bean化。这种方式更加灵活,能够更好地利用Spring...

Global site tag (gtag.js) - Google Analytics