Spring学习 基于注解的AOP控制事务

news/2025/1/16 0:04:24/

8.1.拷贝上一章代码

8.2.applicationContext.xml

<!-- 开启spring对注解事务的支持 -->
<tx:annotation-driven transaction-manager="transactionManager"/> 

8.3.service

@Service
@Transactional(readOnly=true,propagation= Propagation.SUPPORTS)
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;/*** 转账* @param source* @param target* @param money*/@Override@Transactional(readOnly=false,propagation=Propagation.REQUIRED)public void updateUser(String source, String target, Float money) {userMapper.updateUserOfSub(source, money);int a = 6/0;userMapper.updateUserOfAdd(target, money);}
}

8.4.测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")//加载配置文件
public class ServiceTest {@Autowiredprivate UserService userService;/*** 转账业务*/@Testpublic void testUpdate(){userService.updateUser("张三丰","宋远桥",1F);}
}
  • 事务回滚:

    在这里插入图片描述


http://www.ppmy.cn/news/1297264.html

相关文章

Qt5插件开发入门+示例

目的 1、为什么用插件 现在大家最讲模块化开发了,怎么算模块化,分成不同的类,分成不同的文件夹,高内聚,低耦合,这个当然算是。 从高层次讲,它们是在一起的,只是逻辑上的模块化,不是物理上的模块化,或者说不是彻底的模块化,彻底的模块化应该像一个辆自行车一样,车…

使用python生成一个指定长度的字符串

自己指定字符串长度。随机字符由字母、数字组成。 import random import string 随机生成一个字符串 字符串长度&#xff1a; 自定义 class StringGenerator:def __init__(self, length):self.length lengthdef generate_string(self):if self.length < 0:return "Le…

Adding Conditional Control to Text-to-Image Diffusion Models——【论文笔记】

本文发表于ICCV2023 论文地址&#xff1a;ICCV 2023 Open Access Repository (thecvf.com) 官方实现代码&#xff1a;lllyasviel/ControlNet: Let us control diffusion models! (github.com) Abstract 论文提出了一种神经网络架构ControlNet,可以将空间条件控制添加到大型…

nuxt 不解析HTML结构bug

记录一个本人Vue3迁移Nuxt3的报错 报错信息 [Vue warn]: Failed to resolve directive: top [nitro] [unhandledRejection] TypeError: Cannot read properties of undefined (reading ‘getSSRProps’) 原因是Vue3在迁移到nuxt3的时候有一个自定义指令没有搬过来&#xff0…

spark的任务提交方式及流程

本地模式 local 测试用,不多赘述 分布式模式 standalone standalone集群是spark 自带的一个资源调度集群&#xff0c;分为两个角色&#xff0c;master/worker&#xff0c;master负责接收任务请求、资源调度&#xff08;监听端口7077&#xff09;&#xff0c;worker负责运行exec…

简单易懂深入PyTorch中RNN、LSTM和GRU使用和理解

目录 torch.nn子模块Recurrent Layers nn.RNNBase RNNBase 类描述 RNNBase 类的功能和作用 flatten_parameters() 方法 示例代码 nn.RNN RNN 类描述 RNN 类的功能和作用 RNN 类的参数 输入和输出 注意事项 示例代码 nn.LSTM LSTM 类描述 LSTM 类的功能和作用 …

服务器监控软件夜莺使用(二)

文章目录 一、采集器安装1. Categraf简介2. Categraf部署3. 测试服务器部署4. 系统监控插件5. 显卡监控插件6. 服务监控插件 二、监控仪表盘1. 机器列表2. 系统监控3. 服务监控 三、告警配置1. 邮件通知2. 告警规则3. 告警自愈 一、采集器安装 1. Categraf简介 Categraf 需要…

git stash 命令详解

git stash 是 Git 版本控制系统中的一个强大功能&#xff0c;允许你临时保存&#xff08;或者“藏匿”&#xff09;你的更改&#xff0c;然后你可以在任何时候重新应用这些更改。这是非常有用的&#xff0c;特别是当你需要切换分支去工作其他任务&#xff0c;但你当前的工作进度…