`

spring声明式事务配置方法(二):TransactionProxyFactoryBean方式

阅读更多
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    <bean id="testAction" class="test.action.Stuts2ActionTest">
        <property name="service" ref="templatesService"></property>
    </bean>

    <bean id="templatesService"
        class="test.service.impl.TaoTemplatesServiceImpl">
        <property name="dao" ref="templatesDAO" />
    </bean>

    <!--   定义DAO bean的事务代理-->
    <bean id="templatesDAO"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean ">
        <!--   为事务代理bean注入事务管理器-->
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <!--   设置事务属性-->
        <property name="transactionAttributes">
            <props>
                <!--   所有以add开头的方法,采用required的事务策略,并且只读-->
                <prop key="add*">PROPAGATION_REQUIRED</prop>
                <!--   所有以mod开头的方法,采用required的事务策略,并且只读-->
                <prop key="mod*">PROPAGATION_REQUIRED</prop>
                <!--   所有以del开头的方法,采用required的事务策略,并且只读-->
                <prop key="del*">PROPAGATION_REQUIRED</prop>
                <!--   其他方法,采用required的事务策略 -->
                <prop key="*">readOnly</prop>
            </props>
        </property>
        <!--   为事务代理bean设置目标bean -->
        <property name="target">
            <!--   采用嵌套bean配置目标bean-->
            <bean class="test.dao.impl.TaoTemplatesDAOImpl">
                <!--   为DAO bean注入SessionFactory引用-->
                <property name="sessionFactory">
                    <ref local="sessionFactory" />
                </property>
            </bean>
        </property>
    </bean>



    <!--定义数据源-->
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <!--   定义数据库驱动-->
        <property name="driverClassName">
            <value>oracle.jdbc.driver.OracleDriver</value>
        </property>
        <!--   定义数据库url-->
        <property name="url">
            <value>jdbc:oracle:thin:@192.168.1.96:1521:yxdb</value>
        </property>
        <!--   定义数据库用户名-->
        <property name="username">
            <value>yxuser</value>
        </property>
        <!--   定义数据库密码-->
        <property name="password">
            <value>yxuser</value>
        </property>
    </bean>

    <!--定义一个hibernate的SessionFactory-->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!--   定义SessionFactory必须注入DataSource-->
        <property name="dataSource">
            <ref local="dataSource" />
        </property>
        <property name="mappingResources">
            <list>
                <!--以下用来列出所有的PO映射文件-->
                <value>test/mapping/Tao_Templates.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.Oracle10gDialect
                </prop>
                <prop key="hibernate.show_sql">true</prop>
                <!--此处用来定义hibernate的SessionFactory的属性:
                    不同数据库连接,启动时选择create,update,create-drop -->
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>


    <!--   定义事务管理器,使用适用于Hibernte的事务管理器-->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!--   HibernateTransactionManager   bean需要依赖注入一个SessionFactory bean的引用-->
        <property name="sessionFactory">
            <ref local="sessionFactory" />
        </property>
    </bean>


</beans>
分享到:
评论

相关推荐

    Spring源代码解析(六):Spring声明式事务处理.doc

    在 Spring 中,声明式事务处理可以通过配置 TransactionProxyFactoryBean 来实现。TransactionProxyFactoryBean 是一个 FactoryBean,它可以创建一个代理对象,该代理对象可以拦截业务方法的调用,并对事务进行管理...

    Spring使用TransactionProxyFactoryBean声明式事务配置实例

    总的来说,Spring的TransactionProxyFactoryBean是声明式事务管理的一种高效实现方式,它通过代理对象实现了事务策略与业务逻辑的解耦,使我们的代码更加简洁和易于维护。通过深入理解和灵活运用,我们可以更好地...

    spring声明式事务配置

    ### 标题解读:Spring声明式事务配置 Spring框架提供了两种主要类型的事务管理方式:编程式事务管理和声明式事务管理。声明式事务管理通过XML配置或注解的形式定义事务边界,使得业务逻辑与事务控制分离。 ### ...

    spring声明式事务配置方法.docx

    以下是关于Spring声明式事务配置方法的详细解释。 首先,Spring声明式事务管理主要依赖于AOP(面向切面编程)实现。通过在配置文件中定义事务的规则,Spring可以在特定的方法执行前后自动地进行事务的开启、提交、...

    spring 事务管理例子(TransactionProxyFactoryBean代理机制 和 tx/aop)

    总结来说,本例子通过`TransactionProxyFactoryBean`和`@Transactional`展示了如何在Spring中实现声明式事务管理,这两种方式都利用了AOP来封装事务逻辑,使代码更加整洁,降低了事务管理的复杂性。在实际应用中,...

    声明式事务控制spring+hibernate集成

    在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...

    Spring中的四种声明式事务的配置

    Spring提供了四种不同的方式来配置声明式事务,这使得事务管理更加灵活且易于维护。下面将详细介绍这四种方式。 1. **基于XML的TransactionProxyFactoryBean** 这是最常见的一种方式,通过`...

    spring2.0声明式事务

    ### Spring 2.0 声明式事务配置详解 #### 一、Spring 2.0 声明式事务概述 随着 Spring 框架的发展,从 Spring 1.x 到 Spring 2.0 版本,声明式事务管理方式有了显著改进。在 Spring 1.x 中,主要通过 AOP 方式实现...

    spring事务配置的五种方式

    其中,声明式事务因其简单易用而被广泛采用。本文将详细介绍Spring中事务配置的五种方式,帮助开发者更好地理解和运用这些配置方法。 #### 二、Spring事务配置的基本组成部分 Spring事务配置主要包含以下三个核心...

    Spring+Hibernate事务管理

    * 声明式事务管理: * 基于TransactionProxyFactoryBean的方式.(很少使用) * 需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强. * 基于AspectJ的XML方式.(经常使用) * 一旦配置好之后,...

    Spring事务配置的五种方式

    虽然不常见,但Spring也支持编程式事务管理,通过`PlatformTransactionManager`接口的实现类来手动控制事务的开始、提交、回滚。这种方式灵活性较高,但代码侵入性强,一般不推荐。 5. **基于AspectJ的事务配置** ...

    spring事务配置的5中方式

    总的来说,声明式事务管理(基于XML、注解、Java配置)更为常用,因为它们更简洁,易于维护,而编程式事务管理则提供了更大的灵活性。理解并熟练掌握这些事务配置方式,对于开发高质量的Spring应用至关重要。

    Spring的五种事务配置方式[参照].pdf

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。Spring提供了多种事务配置方式,使得开发者可以...在实践中,声明式事务管理(尤其是基于注解的方式)因其简洁性和易于维护而被广泛采用。

    spring事物的五种配制方法

    1. **第二种方法:使用AOP的声明式事务管理**:这种方式通过AOP(面向切面编程)来配置事务,可以避免为每个Bean都配置代理。通常使用`&lt;tx:annotation-driven&gt;`标签来启用注解驱动的事务管理。 - **特点**:代码更...

    spring基于AOP实现事务

    总结一下,Spring基于AOP实现的事务管理通过TransactionProxyFactoryBean,结合声明式事务配置,能够提供一种高效且易于维护的事务解决方案。它允许我们在不修改业务逻辑的情况下,统一管理和控制事务,提升了代码的...

    Spring编程式和声明式事务实例讲解小结

    * 基于TransactionInterceptor的声明式事务:Spring声明式事务的基础,通常也不建议使用这种方式。 * 基于TransactionProxyFactoryBean的声明式事务:第一种方式的改进版本,简化了配置文件的书写。 * 基于和命名...

    详细说明spring事务配置的5种方式

    第四种方式结合了AOP(面向切面编程)和声明式事务管理。通过在配置中启用AspectJ自动代理和事务注解支持,Spring会自动识别带有`@Transactional`的方法,并在运行时使用AspectJ织入事务处理代码。这种方式无需额外...

    spring 事务代理配置

    除了使用`TransactionProxyFactoryBean`,Spring还提供了其他几种声明式事务管理配置方式,包括: 1. **使用注解(@Transactional)**:这是最常见的声明式事务管理方式,通过在方法或类上添加`@Transactional`注解...

Global site tag (gtag.js) - Google Analytics