Spring的定义
对DI的初步理解
对AOP的初步理解
对DI的深入探究
对AOP的深入探究
Spring的事务管理
Spring MVC
首先来说一些概念性的东西,就是事务的的ACID属性:
原子性:事务中的操作要么都发生要么都不发生;
一致性:事物一旦结束了,数据不应当被破坏;
隔离性:一个用户的操作不能和其他用户的操作相混淆;
持久性:一旦事务完成,应当被持久化。
spring是不直接管理事务的,而是交给事务管理器。所有的spring事务管理器都是实现自PlatformTransactionManager接口的,比如,hibernate的事务管理器为HibernateTransactionManager类、JDBC或iBatis的事务管理器是DataSourceTransactionManager类等等。这里就不一一列举了,用到的话可以去查资料。下面给出了JDBC事务管理器的配置的例子:
<bean id=”transactionManager” class=”org.springframework.jdbc.datasource. DataSourceTransactionManager”>
<property name=”dataSource” ref=”yourDataSourceBean” />
</bean>
下面我们就尝试用spring的TransactionTemplate方式编写一个事务,TransactionTemplate是通过一种叫做回叫机制的实现的。
public void youMethodName() //要加入事务管理的方法的名字
{
transactionTemplate.execute
(
new TransactionCallback()
{
public Object doInTransaction( TransactionStatus ts )
{
try
{
……… //这里写原来的业务逻辑代码
}
catch( Exception e )
{
ts.setRollbackOnly();
}
return null;
}
}
)
}
当然,在这个类的youMethodName方法中使用的transactionTemplate是需要被注入进来的。像如下这样:(其中飘红的依赖可以是上面说到的任何一种spring事务管理器。)
<bean id=”youClass” class=”com.alibaba.YouClass”>
<property name=” transactionTemplate”>
<bean class=”org.springframework.Transaction.support. TransactionTemplate”>
< property name=” transactionManager” ref=” transactionManager” />
</bean>
</ property>
</bean>
下面来说一下spring的声明式事务。spring的声明式事务共有三种:一种是基于aop代理bean的方式;一种是基于简单的xml声明的tx命名空间的方式;最后一种是注释驱动事务。先来说一下spring定义事务的几个参数:传播行为、隔离级别、只读、事务超时、回滚规则。下面定义的是第一种声明式事务(基于aop代理bean的方式):
<bean id=”someService” class=” org.springframework.Transaction.interceptor.TransactionProxyFactoryBean”>
<property name=”target” ref=”someServiceTarget” />
<property name=”proxyInterfaces” ref=”com.alibaba.service.SomeService” />
<property name=” transactionManager” ref=” transactionManager” />
<property name=” transactionAttributes”>
<props>
<prop key=”add*”>…</props>
<prop key=”*”>…</props>
</props>
</property>
</bean>
上面的transactionManager可以是前面提到的任何一种spring事务管理器。而transactionAttributes属性则是指明了事务的具体参数。它含有一个props集,该集含有N个prop属性,每个<prop>的键是一个方法名称的模式,而其具体指则是事务的具体参数。其中事务的具体参数的顺序为:传播行为(必选)、隔离级别(可选)、是否只读(可选)、回滚规则(可选),他们之间以逗号隔开。
下面的则是以tx命名空间声明的事务:
<tx:advice id=”txAdvice” transaction-manager=” transactionManager”>
<tx:attributes>
<tx:method name=”add*” ……>
<tx:method name=”*” ……>
</tx:attributes>
</tx:advice>
其中“transaction-manager”指明了spring的事务管理器,<tx:attributes>则类似前面提到的<props>。省略号部分的属性名包括:isolation(事务隔离级别)、no-rollback-for(哪些异常事务是不需要回滚的)、propagation(事务的传播规则)、read-only(是否只读)、rollback-for(哪些异常应该回滚事务)、timeout(超时时间)。当然,这只是事务通知,我们还没有定义哪些bean应该被通知。
<aop:config>
<aop:advistor pointcut=”” advice-ref=” txAdvice” />
</aop:advistor>
最后一种实现spring事务的方式是注释驱动的方式。在类或接口中都可以使用。只需要加上@Transactional(......)即可,括号里加上具体的事务参数。当然,配置文件中要加上如下代码:
<tx:annotation-driven transaction-manager=”txManager”>
分享到:
相关推荐
### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
6. **事务管理**:Spring提供了声明式和编程式事务管理,使得事务处理更加方便。 7. **Spring Boot**:近年来,Spring Boot简化了Spring应用的初始设置,提供了自动配置和起步依赖,使得开发更加高效。 8. **...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
3. **面向切面编程 (AOP)**:Spring支持面向切面编程,这是一种将横切关注点(如日志记录、事务管理等)从业务逻辑中分离出来的编程范式。通过AOP,开发者可以在不修改业务逻辑代码的情况下添加新的功能。 4. **ORM...
Spring学习笔记( spring视频笔记)
在本篇“Spring.NET学习笔记16——事务管理Demo源码”中,我们将深入探讨Spring.NET的事务管理机制及其实际应用。 事务管理是软件开发中的关键部分,它确保数据库操作的一致性和完整性。Spring.NET通过其事务管理...
spring学习笔记
- **源代码开放**:Spring框架的源代码是公开的,虽然它并不是基于任何特定的标准,但其设计模式和最佳实践仍然值得学习。 ##### 2. 使用Spring的原因 - **解决J2EE开发中的常见问题**:传统的J2EE开发存在大量重复...
Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...
面向切面编程是Spring提供的另一个重要功能,它允许开发者将关注点分离,比如日志、事务管理等,从主业务逻辑中抽取出来,形成独立的“切面”。切面可以在特定的“连接点”(如方法调用)上织入,提高了代码的复用性...
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
- **核心容器**:Spring框架的核心容器包括BeanFactory和ApplicationContext。BeanFactory是最基本的容器,负责管理对象的生命周期和配置数据。ApplicationContext则是在BeanFactory的基础上扩展了更多功能,比如...
- **简化开发过程**:Spring提供了一系列的工具和服务,例如事务管理、数据访问、日志记录等,帮助开发者快速构建复杂的应用程序。 #### 二、Spring框架的组成 Spring框架由七个核心模块组成: 1. **Spring Core*...
7. **Spring AOP事务管理**:Spring提供了声明式和编程式的事务管理,开发者可以通过配置或注解轻松地控制事务的边界,保证数据的一致性。 8. **Spring Boot**:作为Spring的现代化版本,Spring Boot简化了Spring...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
Spring的事务管理是一个非常重要的功能,它提供了声明式事务管理,允许开发者通过配置而非硬编码的方式管理事务。这使得事务管理可以独立于业务逻辑进行测试和维护,大大提高了应用的可靠性和开发效率。 Spring框架...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...
在Spring框架中,事务管理是核心功能之一,它确保了数据的一致性和完整性。这篇"Spring学习笔记(18)-...这篇笔记详细阐述了Spring配置文件实现事务管理的方法,是初学者和进阶者理解Spring事务管理机制的重要参考资料。
4. **Filter Chain**:Spring Security通过一系列过滤器形成一个过滤链,每个过滤器都有特定的任务,如BasicAuthenticationFilter处理基本认证,RememberMeAuthenticationFilter处理记住我功能等。 5. **Session ...