欢迎光临散文网 会员登陆 & 注册

Spring框架入门必备教程-Spring事务(下篇)

2021-03-17 16:00 作者:动力节点小王本王  | 我要投稿




使用 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 方法加入事务属性

使用 AspectJ 的 AOP 配置管理事务(掌握)

使用XML 配置事务代理的方式的不足是,每个目标类都需要配置事务代理。当目标类较多,配置文件会变得非常臃肿。

使用XML 配置顾问方式可以自动为每个符合切入点表达式的类生成事务代理。其用法很简单,只需将前面代码中关于事务代理的配置删除,再替换为如下内容即可。

Step1:复制项目

复制trans_sale 项目,并重命名为trans_sal_aspectj。在此基础上修改。


Step2:maven 依赖pom.xml

新加入aspectj 的依赖坐标

Step3:在容器中添加事务管理器

Step4:配置事务通知

为事务通知设置相关属性。用于指定要将事务以什么方式织入给哪些方法。

例如,应用到buy 方法上的事务要求是必须的,且当buy 方法发生异常后要回滚业务。

Step5:配置增强器

指定将配置好的事务通知,织入给谁。

Step6:修改测试类

测试类中要从容器中获取的是目标对象。

最后奉上视频教程👇,视频观看效果更佳!!走过路过别忘素质三连哦~~




Spring框架入门必备教程-Spring事务(下篇)的评论 (共 条)

分享到微博请遵守国家法律