用 spring 事务管理器,由spring来负责数据库的打开,提交,回滚.默认遇到运行期例外
(throw new RuntimeException("注释");)会回滚:unchecked,需要捕获的例外(throw
new Exception("注释");)不会回滚:checked.
需要修改规则加入注释:
@Transactional(rollbackFor=Exception.class) //指定回滚,需要捕获的例外(throw
new Exception("注释");)不会回滚
public void methodName() {
throw new Exception("注释");
}
@Transactional(noRollbackFor=Exception.class)//指定不回滚,遇到运行期例外
(throw new RuntimeException("注释");)会回滚
public ItimDaoImpl getItemDaoImpl() {
throw new RuntimeException("注释");
}
//事务传播属性
@Transactional(propagation=Propagation.REQUIRED) //如果有事务,那么加入事
务,没有的话新建一个(不写的情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED) //容器不为这个方法
开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW) //不管是否存在事务,
都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY) //必须在一个已有的事务中
执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER) //必须在一个没有的事务中执
行,否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS) //如果其他bean调用这个方
法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
/*public void methodName(){
update();//本类的修改方法 1
otherBean.update();//调用其他类的修改方法
update();//本类的修改方法 2
}
other失败了不会影响 本类的修改提交成功
本类update的失败,other也失败
*/
@Transactional(propagation=Propagation.NESTED)
@Transactional (propagation =
Propagation.REQUIRED,readOnly=true) //readOnly=true只读,不能更新,删除
@Transactional (propagation = Propagation.REQUIRED,timeout=30)//设置超时时间
@Transactional (propagation =
Propagation.REQUIRED,isolation=Isolation.DEFAULT)//设置数据库隔离级别
转载处:http://code.google.com/p/pcitcredo/issues/detail?id=2
分享到:
相关推荐
AOP允许开发者定义“切面”,这些切面可以包含业务逻辑的各个部分,如日志记录、事务管理等。Spring通过代理模式实现了AOP,主要有JDK动态代理和CGLIB代理两种方式。在源码中,`Advisor`、`Pointcut`和`Advice`等...
- **事务管理**:学习 Spring 如何提供声明式和编程式事务管理,以及事务的传播行为。 - **Spring 容器**:探究 BeanFactory 和 ApplicationContext 的区别,以及如何通过它们管理对象的生命周期。 - **数据访问**:...
Spring框架是Java开发中最广泛应用的轻量级框架之一,它以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,提供了全面的解决方案,包括数据访问、事务管理、Web...
2. **Spring事务管理** 在Spring中,事务管理分为编程式和声明式两种。编程式事务管理需要在代码中显式地调用开始、提交、回滚等事务操作,而声明式事务管理则更简洁,通过配置或者注解即可实现,降低了代码的耦合...
通过阅读源码和注释,我们可以更清晰地了解Spring如何管理依赖注入、AOP(面向切面编程)、事务管理、上下文以及其他的特性。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,允许组件之间...
2. **AOP(Aspect Oriented Programming)**:Spring 提供了面向切面编程的支持,允许开发者定义“切面”,这些切面可以在应用程序的关键点执行特定的操作,如日志记录、事务管理等。这样可以将这些通用功能从业务...
一阶段 1、Spring概述 2、一切从bean开始 3、俯瞰Spring架构设计 4、Spring源码下载 二阶段 1、什么是IOC/DI 2、SpringIOC体系结构 3、源码分析-IOC容器的初始化 ...Spring事务源码解析 需要其他源码请私信我
这个"最全中文注释版Spring4源码"提供了一个深入了解Spring内部工作原理的绝佳机会,尤其是对于那些希望提升自己技能,从底层理解如何管理Bean、处理上下文以及构建Web应用程序的开发者来说。 首先,我们要关注的是...
2. **AOP(Aspect Oriented Programming,面向切面编程)**:Spring支持面向切面编程,可以方便地实现如日志记录、事务管理等横切关注点。 3. **数据访问/集成(Data Access/Integration)**:Spring提供了对多种...
在这个项目中,我们看到的是一个基于Struts2.3、Spring3.2和MyBatis3.1的集成应用,其中使用了注释式的事务管理。 首先,让我们来详细了解一下这三个框架: 1. **Struts2**:这是一个基于MVC设计模式的Java Web...
中文注释版的源码能帮助我们深入理解Spring如何实现DI,以及如何通过ApplicationContext进行容器的创建和管理。 三、面向切面编程(AOP) AOP允许开发者定义"切面",即关注点的模块化,如日志、事务管理等。Spring...
在这个"Spring注释包"中,我们将深入探讨Spring框架如何通过注释来简化开发,提高代码的可读性和可维护性。 首先,让我们了解一下Spring中的核心注解: 1. `@Component`:这是最基础的组件注解,用于标记一个类为...
首先,Spring框架的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)和声明式事务管理。依赖注入允许开发者通过配置文件或注解来管理对象之间的依赖关系,降低...
Spring 的 AOP 模块支持在不修改代码的情况下,对方法进行拦截,实现如日志记录、事务管理等功能。它可以定义切点(Pointcut),匹配特定的方法调用,并通过通知(Advice)来执行额外的操作。 4. **MVC(Model-...
通过DataSource和TransactionManager的配置,Spring可以提供统一的事务管理,简化数据访问层的编程模型。 5. **MVC框架**:Spring MVC是Spring提供的Web应用开发框架,它将模型、视图、控制器分离,使得开发更易于...
Struts2、Hibernate和Spring是Java开发中常用的三大框架,它们各自负责Web应用程序的不同层面:Struts2处理表现层逻辑,Hibernate管理数据持久化,而Spring则提供了全面的依赖注入和事务管理。本文将深入探讨这三大...
这种配置方式使得ibatis能够在不依赖Spring事务管理的情况下独立工作,从而实现了对ibatis事务的保留。 #### 四、实现自定义控制回滚 当保留ibatis事务后,开发者可以在业务逻辑中更自由地控制事务的提交和回滚。...
`PlatformTransactionManager`是Spring事务管理的核心接口,它定义了开始、提交、回滚事务的方法。声明式事务管理主要通过`@Transactional`注解实现,它简化了事务控制,使得事务管理更加透明。 Spring的IoC(控制...
10. **Spring Transactions**:事务管理模块,支持编程式和声明式事务管理,可以在多数据源环境中实现事务的一致性。 11. **Spring Boot**:近年来流行的快速启动Spring应用程序的方式,它默认配置了很多功能,简化...
Spring事务失效的常见场景有七种,分别是:注解@Transactional 配置的方法非 public 权限修饰、注解@Transactional 所在类非 Spring 容器管理的 bean、注解@Transactional 所在类中,注解修饰的方法被类内部方法调用...