<?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="propertyConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:jdbc.properties">
<!-- <list>
<value>classpath:jdbc.properties</value>
</list>
-->
</property>
</bean>
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<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>
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
<!-- 配置事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" lazy-init="default">
<property name="dataSource" ref="dataSource"/>
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!--
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
-->
<!-- 若方法名不和下边的相同,可以修改。例如:<tx:method name="add*" propagation="REQUIRED"/> -->
<!--
1.事务传播设置是 REQUIRED
2.隔离级别是 DEFAULT
3.事务是 读/写
4.事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
5.任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚
-->
<!--属性的介绍 -->
<!--
propagation属性:事务传播行为REQUIRED
I.PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,
如果存在,加入到这个事务中------->常用
I.PROPAGATION_SUPPORTS:支持当前事务,若没有事务,就以非事务的
方式执行。
I.PROPAGATION_MANDATORY:使用当前事务,若没有事务就抛出异常。
I.PROPAGATION_REQUIRES_NEW:新建事务,若当前存在事务,把
事务挂起。
I.PROPAGATION_NOT_SUPPORTS:以非事务方式执行操作,如果当前
存在事务就挂起。
I.PROPAGATION_NEVER:以非事务的方式执行,如果当前存在事务抛出异常。
I.PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。
若没有事务,则执行PROPAGATION_REQUIRED类似的操作。
isolation属性:事务隔离级别 DEFAULT
rollback-for属性: 将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
read-only属性:事务是否只读?false
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="get*" propagation="REQUIRED" read-only="true"/>
<tx:method name="load*" propagation="REQUIRED" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 第一个 * —— 通配 任意返回值类型
第二个 * —— 通配 包com.spring.services下的任意class
第三个 * —— 通配 包com.spring.services下的任意class的任意方法
第四个 .. —— 通配 方法可以有0个或多个参数
-->
<!--配置切入点-->
<aop:config>
<aop:pointcut id="allMethod" expression="execution(* com.spring.services.*.*(..))"/>
<aop:advisor pointcut-ref="allMethod" advice-ref="txAdvice"/>
</aop:config>
</beans>
<!--
注意:导入commons-dbcp.jar
commons-pool.jar
-->
[/color][color=violet]
分享到:
相关推荐
Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。
实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...
Spring事务管理的核心是基于AOP(面向切面编程)来实现的。 **Spring事务的本质**实际上是依赖于底层数据库提供的事务支持。如果没有数据库层面的支持,Spring无法单独实现事务的功能。在传统的JDBC操作中,如果想...
在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。
Spring 中的事务管理可以分为两种:编程式事务管理和声明式事务管理。编程式事务管理是指通过编程的方式来管理事务,而声明式事务管理是指通过配置的方式来管理事务。 事务管理的隔离级别 Spring 中的事务管理提供...
在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的事务管理功能是它的一大亮点。本篇文章将深入探讨Spring事务管理的五种...在实际开发中,结合源码阅读和工具辅助,可以更深入地掌握Spring事务管理的精髓。
本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理、编译工具以及与数据库交互的相关jar包。下面将对这些知识点进行详细解释: 1. **Spring框架*...
Spring事务管理就是围绕这些特性来确保数据的一致性。 四、事务的传播行为 在Spring中,我们可以配置事务的传播行为,比如REQUIRED(默认,如果当前存在事务,则加入当前事务,否则新建一个事务)、PROPAGATION_...
Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其简洁性和易用性而更受欢迎。本文将详细介绍Spring中的事务传播属性,并通过具体的例子来解释每种传播行为的特点。 #### ...
首先,Spring事务管理的核心概念是ACID(原子性、一致性、隔离性和持久性),这是所有事务系统的基础。在Spring中,事务管理分为两种模式:声明式事务管理和编程式事务管理。声明式事务管理通过配置元数据(如XML或...
在实际开发中,理解这部分源码有助于我们更深入地掌握Spring事务管理的工作原理。 至于工具,开发者可以使用诸如IntelliJ IDEA这样的IDE,其中集成的调试工具可以帮助我们跟踪代码执行流程,查看事务状态的变化,...
1. **编程式事务管理**:这种方式要求开发者在代码中显式地开始、提交或回滚事务。通常通过`PlatformTransactionManager`接口实现,例如`DataSourceTransactionManager`。使用这种方式,事务边界由try-catch-finally...
Spring事务管理主要分为两种方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编写代码来控制事务的开始、提交、回滚等操作,而声明式事务管理则是通过配置或注解来定义事务边界,更加直观和易于使用。 ...
3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握基于XML和Annotation的声明式事务管理的使用。 二.实验内容 (1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口...
这个版本的Spring事务管理支持JDBC、Hibernate、JPA、iBatis等多种数据访问技术,可以无缝集成到各种持久层框架中。 在Spring中,事务管理器(如DataSourceTransactionManager或HibernateTransactionManager)是...
### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...
Spring事务管理是企业级Java应用中不可或缺的一部分,它确保了数据的一致性和完整性,尤其是在多线程和分布式环境中。本实例将深入探讨Spring事务管理的实现与应用。 首先,Spring事务管理分为编程式事务管理和声明...