用
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)//设置数据库隔离级别
分享到:
相关推荐
Spring事务管理分为编程式和声明式两种。编程式事务管理通过编程的方式(如使用`TransactionTemplate`或直接调用`PlatformTransactionManager`)来控制事务的开始、提交、回滚等操作。而声明式事务管理则是在配置...
- 配置类中需要启用事务注解处理,例如在`@Configuration`类中添加`@EnableTransactionManagement`。 通过以上介绍,我们可以看到Spring的注解事务管理提供了强大且灵活的机制,使得开发者可以专注于业务逻辑,而...
在Spring框架中,事务管理是核心功能之一,它确保了数据的一致性和完整性。本篇文章将深入探讨Spring JDBC如何通过注解来实现事务管理。 1. **Spring JDBC简介** Spring JDBC提供了一个JdbcTemplate类,它封装了...
注解中可以包含多个属性,如`value`(指定事务管理器)、`propagation`(事务传播行为)、`isolation`(事务隔离级别)、`readOnly`(是否只读事务)等,以定制事务的行为。 3. **事务传播行为** 事务传播行为定义...
Spring事务管理是Spring框架的核心特性之一,主要用于处理应用程序中的数据一致性问题。在多线程、分布式系统中,事务管理显得尤为重要。本节将详细介绍Spring如何通过XML配置和注解方式来实现事务管理。 首先,...
在实际开发中,通过注解方式实现声明式事务管理时,可以在接口的方法上添加@Transactional注解,并通过注解的属性来定制事务行为,如隔离级别、传播行为等。如果采用XML配置方式,则需要在Spring的XML配置文件中进行...
总结来说,Spring中注解的实现原理涉及到元注解的定义、注解处理器的运行、BeanDefinition的生成以及AOP和事务管理的注解处理。这些机制使得Spring能够在不依赖XML的情况下,提供灵活、高效且易于维护的框架功能。...
"spring注解式事务" Spring框架提供了基于注解的方式来管理事务,使用@Transactional注解来标记需要事务管理的方法。该注解可以被应用于public方法上,对于非public方法,如果标记了@Transactional也不会报错,但...
以下是一些常用的Spring注解: 1. **@Component** - 用于标记一个类作为Spring管理的Bean。 - 可以配合@ComponentScan注解使用,自动扫描指定包下的所有组件。 2. **@Service** - 特别适用于业务逻辑层的服务...
在深入理解Spring事务传播属性之前,我们首先需要了解Spring中的事务管理模型,包括编程式事务管理和声明式事务管理。 编程式事务管理通过TransactionTemplate或PlatformTransactionManager接口手动控制事务的开始...
在Hibernate3.2中,注解如`@Entity`、`@Table`、`@Id`等被用来标记实体类和属性,使得数据库模型与Java对象可以直接对应。例如,`@Entity`定义了一个JPA实体,`@Table`指定其对应的数据库表,`@Id`标记主键字段。 ...
`@Value`注解允许直接在类中注入值,可以是从属性文件中读取的值,也可以是硬编码的字符串、数字或其他类型。 5. `@PostConstruct` 和 `@PreDestroy` 这两个注解标记了在bean初始化后和销毁前需要执行的方法。 6...
在源码中,`PlatformTransactionManager`和`@Transactional`注解是核心概念,前者定义了事务管理的策略,后者则在方法级别声明事务边界。 5. **Spring MVC**:Spring的Web MVC模块用于构建Web应用程序。`...
实验 "Spring 声明事务" 是 Java 高级编程中的一个重要环节,旨在让学生掌握 Spring 框架中声明式事务管理的配置和使用。在实际应用中,事务管理是确保数据一致性、完整性和可靠性的关键组件。Spring 提供了声明式...
- DWR调用的方法如果涉及到数据库操作,可以通过Spring的`@Transactional`注解来实现事务控制。 7. **安全性考虑**: - DWR提供了安全机制,如CSRF保护、IP过滤等。结合Spring Security,可以进一步增强应用的...
"spring事务操作主要对象.png"可能展示了Spring事务管理的关键组件,如TransactionDefinition(定义事务属性)、PlatformTransactionManager(事务管理器接口)、TransactionStatus(事务状态对象)等。这些对象协同...
在Spring框架中,声明式事务管理是其核心特性之一,它允许开发者无需手动处理事务的开始、提交、回滚等操作,而是通过配置或者注解的方式进行声明,从而简化了事务管理的复杂性。本篇文章将深入探讨如何使用Spring的...
首先,我们要理解Spring事务管理的两种主要方式:编程式事务管理和声明式事务管理。编程式事务管理通常通过AOP(面向切面编程)的TransactionTemplate或PlatformTransactionManager接口直接在代码中控制事务,而声明...
Spring框架的声明式事务处理是Java企业级应用中不可或缺的一部分,它为开发者提供了一种方便、高效的方式来管理事务。在Spring中,事务管理分为编程式和声明式两种方式,而声明式事务处理则是通过配置来控制事务的...
Spring框架在2.5版本引入了对注解的广泛支持,这一特性在后续的3.0版本中得到了进一步增强,并且成为了Spring应用的核心部分。注解的使用极大地简化了Spring配置,提高了代码的可读性和可维护性。下面将详细介绍其中...