Spring配置事务在SERVICE层 我认为是经典

本文介绍了一个使用Spring框架进行事务管理的示例配置,包括在SERVICE层和服务DAO层两种方式。配置涉及Spring 2.5.5、Hibernate 3.3.1、Struts 2.0.11.2及PostgreSQL数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:spring2.5.5+hibernate3.3.1+struts2.0.11.2+数据库postgresql
Spring配置事务在SERVICE层
applicationContext.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
 
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.postgresql.Driver">
        </property>
        <property name="url" value="jdbc:postgresql://localhost:5432/sylvia">
        </property>
        <property name="username" value="duan.sixin"></property>
        <property name="password" value="goodhope"></property>
    </bean>
 
    <!-- 把数据源注入给Session工厂 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="configLocations">
            <list>
                <value>
                    classpath:hibernate.cfg.xml
                </value>
            </list>
        </property>
    </bean>
 
    <!-- hibernateTransactionManager-->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
 
    <!-- DAO层接口实现-->
    <bean id="userDAOTarget" class="com.goodhope.dao.impl.UserDaoImpl">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
 
    <!--spring对DAO层的代理-->
    <bean id="userDAOProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <value>com.goodhope.dao.UserDao</value>
        </property>
        <property name="target">
            <ref bean="userDAOTarget" />
        </property>
    </bean>
 
    <!--业务层接口实现,把DAO注入到Service里面-->
    <bean name="userServiceTarget" class="com.goodhope.service.impl.UserServiceImpl">
        <property name="userDAO">
            <ref bean="userDAOProxy" />
        </property>
    </bean>
 
    <!--spring代理业务层的事务管理-->
    <bean id="userServiceProxy"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref local="transactionManager" />
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="*">PROPAGATION_REQUIRED,readOnly
                </prop>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
        <property name="proxyInterfaces">
            <list>
                <value>
                    com.goodhope.service.UserService
                </value>
            </list>
        </property>
        <property name="target">
            <ref bean="userServiceTarget" />
        </property>
    </bean>
 
    <!--配置struts访问,把service层注入到action里面-->
    <bean id="userAction" class="com.goodhope.action.UserAction"
        scope="prototype">
        <property name="userService">
            <ref bean="userServiceProxy" />
        </property>
    </bean>
</beans>

Spring配置事务在DAO层
applicationContext.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="org.postgresql.Driver">
        </property>
        <property name="url" value="jdbc:postgresql://localhost:5432/sylvia">
        </property>
        <property name="username" value="duan.sixin"></property>
        <property name="password" value="goodhope"></property>
    </bean>

    <!-- 把数据源注入给Session工厂 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="configLocations">
            <list>
                <value>
                    classpath:hibernate.cfg.xml
                </value>
            </list>
        </property>
    </bean>

    <!-- hibernateTransactionManager-->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

    <!-- DAO层接口实现-->
    <bean id="userDAOTarget" class="com.goodhope.dao.impl.UserDaoImpl">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>

    <!--spring对DAO层的事务代理-->
    <bean id="userDAOProxy"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="transactionManager" />
        </property>
        <property name="target">
            <ref local="userDAOTarget" />
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="delete*">PROPAGATION_REQUIRED</prop>
                <prop key="update*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>

    </bean>

    <!--service层接口实现,把DAO注入到Service里面-->
    <bean id="userServiceTarget" class="com.goodhope.service.impl.UserServiceImpl">
        <property name="userDao">
            <ref bean="userDAOProxy" />
        </property>
    </bean>

    <!--spring对service层的代理-->
    <bean id="userServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>
                    com.goodhope.service.UserService
                </value>
            </list>
        </property>
        <property name="target">
            <ref bean="userServiceTarget" />
        </property>
    </bean>

    <!--配置struts访问,把service层注入到action里面-->
    <bean id="userAction" class="com.goodhope.action.UserAction"
        scope="prototype">
        <property name="userService">
            <ref bean="userServiceProxy" />
        </property>
    </bean>
</beans>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值