如果你使用的是Spring2.0,可以使用下面方法,非常方便,直接对类名称和方法名事务控制
<?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.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!--加载properties配置文件-->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/jdbc.properties</value>
</list>
</property>
</bean>
<!--数据源-->
<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--事务管理器-->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--aop代理,对所有以Logic为后缀文件名的接口类进行代理-->
<aop:config>
<aop:advisor pointcut="execution(* *..*Dao.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!--数据库事务代理,对类中的指定前缀的方法进行事务控制-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="upload*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
</beans>
UserDao应该是个接口类,需要实现该类并配置Bean
public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
public void updateInfo() throws DataAccessException {
}
}
<bean id="UserDao" class="cn.idtag.dao.UserDaoImpl">
<property name="dataSource" ref="dataSource"/>
</bean>
一、
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="catDao" class="cn.terry.spring.hibernate.CatDao">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="catDaoProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="catDao" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
二、<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="baseTxService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="proxyTargetClass" value="true" />
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<beans default-autowire="byName">
<bean id="userService" parent="baseTxService">
<property name="target">
<bean class="com.pms.service.UserService"/>
</property>
</bean>
</beans>
三、
<beans
<!--spring数据源配置-->
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>mysql</value>
</property>
</bean>
<!--sessionFactory 配置hibernate 映射-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/hibernate/ormXml/Customers.hbm.xml</value>
<value>
com/hibernate/ormXml/Customeraddress.hbm.xml
</value>
</list>
</property>
<!--DAO层引用sessionFactory-->
</bean>
<bean id="CustomersDAO"
class="com.hibernate.dao.CustomersDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="CustomeraddressDAO"
class="com.hibernate.dao.CustomeraddressDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!--事务配置开始-->
<!--hibernate transaction [start]-->
<!-- declare transaction hibernate [start] (事务分二种,以下为声明式事务) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="exampler1_service" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="CustomersDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="get*">
PROPAGATION_REQUIRED,readOnly
</prop>
<prop key="set*">
PROPAGATION_REQUIRED,readOnly
</prop>
<prop key="save">
PROPAGATION_REQUIRED,readOnly
</prop>
</props>
</property>
</bean>
<!--hibernate transaction [end]-->
<!-- declare transaction hibernate [end] -->
<!-- programing transaction hibernate (编程式事务) [start] -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- programing transaction hibernate [end] -->
<!--其它事务配置-->
<!-- JDBC TransactionManager [start]-->
<bean id="transactionManager_jdbc" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref local="dataSource_jdbc"/>
</property>
</bean>
<bean id="dataSource_jdbc" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/MySqlDs</value>
</property>
</bean>
<!--JDBC TransactionManager [end] -->
<!-- JDO TransactionManager [start]-->
<bean id="transactionManager_jdo" class="org.springframework.orm.jdo.JdoTransactionManager">
<property name="persistenceManagerFactory">
<ref local="dataSource_jdbc"/>
</property>
</bean>
<!-- JDO TransactionManager [end] -->
<!-- JTA TransactionManager [start]-->
<bean id="transactionManager_jta" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransactionName">
<value>java:comp/UserTransaction</value>
</property>
</bean>
<!-- JTA TransactionManager [end] -->
<!--事务配置结束-->
相关推荐
在Spring配置文件中,我们需要引入`tx`命名空间,并声明一个`PlatformTransactionManager`实例,例如,对于基于JDBC的事务管理,我们会使用`<bean id="transactionManager" class="org.springframework.jdbc....
本节将详细介绍Spring如何通过XML配置和注解方式来实现事务管理。 首先,我们来看Spring事务的XML配置方式。在Spring中,事务管理通常通过`<tx:annotation-driven>`和`<bean>`标签来实现。`<tx:annotation-driven>`...
通过定义Action类和对应的配置文件struts.xml,我们可以设置URL映射,指定请求如何转发到特定的方法。在XML配置中,我们可以定义action、result、param等元素,以声明式的方式管理应用程序的行为。 接着,Hibernate...
在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过XML配置或注解来定义事务边界,而无需在业务逻辑代码中显式地调用开始、提交或回滚事务的方法。这篇博文"Spring使用XML配置...
2. **引入Spring配置文件**:接着,在Spring的配置文件中引入AOP约束。 3. **编写目标类**:创建需要增强的目标类(如ProductDao)。 4. **配置目标类**:在Spring配置文件中配置目标类。 5. **开启AOP注解自动代理*...
在Spring框架中,声明式事务管理是一种非常重要的特性,它允许开发者通过XML配置或注解来定义事务的边界,而无需在业务代码中显式地管理事务。这种方式极大地提高了代码的可读性和可维护性。本篇文章将深入探讨如何...
本文将详细介绍Spring配置事务的五种方法,每种方法都基于相同的基本组件:DataSource、TransactionManager以及代理机制。理解这些配置方式有助于更好地控制事务在应用程序中的行为。 1. **每个Bean都有一个代理** ...
Spring框架在企业级Java应用中广泛用于实现...总的来说,Spring配置JTA事务管理是一项关键任务,它确保了在分布式环境下的数据一致性。理解并正确配置JTA事务管理,能够让你的应用程序更加健壮,适应复杂的企业级需求。
Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...
1. **spring-mvc.xml**: 这是Spring MVC框架的核心配置文件,用于设置DispatcherServlet的行为,管理控制器(Controller)、视图解析器(View Resolver)、数据绑定器(DataBinder)等组件。例如,它会定义bean,如...
1. **基于XML的全局事务配置**:这种方式通过在Spring配置文件中设置`<tx:advice>`和`<aop:config>`元素来实现事务管理。相比于第一种方式,这种方式更加简洁,适用于所有业务逻辑Bean。 2. **基于注解的事务配置**...
Spring 事务配置是Spring框架中不可或缺的部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager以及代理机制。...
在Spring的XML配置文件中,我们需要定义一个事务管理器bean,并配置相应的事务规则。例如: ```xml <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> ...
在Spring框架中,`applicationContext.xml`是核心配置文件,用于定义bean的声明、依赖注入、数据源配置、事务管理等。在这个配置文件中,我们可以深入理解Spring如何管理和协调应用程序的各个组件。以下是对`...
在`applicationContext.xml`配置文件中,我们可以设置事务管理器和声明事务的行为。例如: ```xml <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> ...
使用它,你可以控制事务的开始、提交、回滚以及设置事务隔离级别。 在Spring事务中,有几种常见的隔离级别可供选择,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)...
本文将详细介绍Spring配置事务的五种方式,以便开发者们更好地理解和应用。 首先,Spring配置事务通常涉及三个关键组件: 1. **DataSource**:数据源,它是连接到数据库的桥梁,负责管理数据库连接。在使用...
这是最常见的一种方式,通过在Spring配置文件中定义AOP代理来实现事务管理。在给定的示例中,`TransactionProxyFactoryBean`被用来创建一个事务代理,它将目标DAO对象(如`userDaoTarget`)包装起来,当调用DAO方法...
"spring和Mybatis的xml配置文件提示约束包"这个主题,主要是关于在XML配置文件中使用的DTD(Document Type Definition)文档类型定义,它为XML文件提供了结构约束和语法规范。 DTD是一种元语言,用于定义XML文档的...