Spring框架教程
Spring IOC控制反转
Spring AOP面向切面编程
Spring集成MyBatis
Spring事务
Spring与Web

使用Spring的事务注解管理事务

通过@Transactional注解方式,可将事务织入到相应public方法中,实现事务管理。

@Transactional的所有可选属性如下所示:

● propagation:用于设置事务传播属性。该属性类型为Propagation枚举,默认值为Propagation.REQUIRED。

● isolation:用于设置事务的隔离级别。该属性类型为Isolation枚举,默认值为Isolation.DEFAULT。

● readOnly:用于设置该方法对数据库的操作是否是只读的。该属性为boolean,默认值为false。

● timeout:用于设置本操作与数据库连接的超时时限。单位为秒,类型为int,默认值为-1,即没有时限。

● rollbackFor:指定需要回滚的异常类。类型为Class[],默认值为空数组。当然,若只有一个异常类时,可以不使用数组。

● rollbackForClassName:指定需要回滚的异常类类名。类型为String[],默认值为空数组。当然,若只有一个异常类时,可以不使用数组。

● noRollbackFor:指定不需要回滚的异常类。类型为Class[],默认值为空数组。当然,若只有一个异常类时,可以不使用数组。

● noRollbackForClassName:指定不需要回滚的异常类类名。类型为String[],默认值为空数组。当然,若只有一个异常类时,可以不使用数组。

需要注意的是,@Transactional若用在方法上,只能用于public方法上。对于其他非public方法,如果加上了注解@Transactional,虽然Spring不会报错,但不会将指定事务织入到该方法中。因为Spring会忽略掉所有非public方法上的@Transaction注解。

若@Transaction注解在类上,则表示该类上所有的方法均将在执行时织入事务。

实现注解的事务步骤:

复制trans_sale项目,新项目trans_sale_annotation

1、声明事务管理器

2、 开启注解驱动

transaction-manager:事务管理器bean的id

3、业务层public方法加入事务属性

全部教程