spring笔记

@Transactional

在方法开始前开启事务

检查异常(unchecked exception)不回滚

如果想针对检查异常进行事务回滚,可以在@Transactional注解里使用 rollbackFor属性明确指定异常。

@Transactional(rollbackFor = Exception.class)

catch的异常不回滚,除非再throw

推荐做法:在业务层统一抛出异常,然后在控制层统一处理。

这样业务层一直在抛异常,就保证了事务会回滚;同时异常可以在控制层统一处理了

Transactional注解的常用属性表:

属性说明
propagation事务的传播行为,默认值为 REQUIRED。
isolation事务的隔离度,默认值采用 DEFAULT
timeout事务的超时时间,默认值为-1,不超时。如果设置了超时时间(单位秒),那么如果超过该时间限制了但事务还没有完成,则自动回滚事务。
read-only指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。
rollbackFor用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。{xxx1.class, xxx2.class,……}
noRollbackFor抛出 no-rollback-for 指定的异常类型,不回滚事务。{xxx1.class, xxx2.class,……}

事务不生效的几种 Case

主要讲解 4 种事务不生效的 Case:

  • 类内部访问:A 类的 a1 方法没有标注 @Transactional,a2 方法标注 @Transactional,在 a1 里面调用 a2;
  • 私有方法:将 @Transactional 注解标注在非 public 方法上;
  • 异常不匹配:@Transactional 未设置 rollbackFor 属性,方法返回 Exception 等异常;
  • 多线程:主线程和子线程的调用,线程抛出异常

注入

原理与顺序,是从谁注入??

动态代理

jdk动态代理需要基于接口实现,因为底层源码时通过实现接口的方式实现代理的;如果使用类的话,会受到java单继承机制的限制;
spring默认使用jdk动态代理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux环境中安装配置Django与PostgreSQL数据库

Django是一款功能强大的Python Web框架,而PostgreSQL是一个开源的高级关系型数据库系统。本文将介绍在Linux环境中如何安装和配置Django与PostgreSQL数据库,帮助您搭建一个完整的开发环境。 第一步:安装Django和PostgreSQL 安装Python环境&a…

鲸鱼优化算法MATLAB代码

论文 Seyedali Mirjalili,Andrew Lewis. The Whale Optimization Algorithm[J]. Advances in Engineering Software,2016,95.func_plot.m % This function draw the benchmark functionsfunction func_plot(func_name)[lb,ub,dim,fobj]Get_Functions_details(func_name);switch…

数据结构(王道)——线性表之静态链表顺序表和链表的比较

一、静态链表 定义: 代码实现: 如何定义一个静态链表 静态链表的基本操作思路: 初始化静态链表: 静态链表的查找、插入、删除 静态链表总结: 二、顺序表和链表的比较 逻辑结构对比: 存储结构对比&#xff…

vue3 引入dataV 报错,使用patch-package记录插件包 node_modeule 修改记录。 vite 版DataV

开发数字大屏功能,引用dataV UI组件库比较好用,目前分为Vue2 和 Vue3 两个版本。 Vue2 --DataV版本 yarn add jiaminghi/data-viewVue3 --DataV版本 yarn add dataview/datav-vue3vite – --DataV版本 //不想动手改的,也可以使用此版本&a…

【Zookeeper】

目录 一、Zookeeper 概述1、Zookeeper 定义2、Zookeeper 工作机制3、Zookeeper 特点4、Zookeeper 数据结构5、Zookeeper 应用场景6、Zookeeper 选举机制 二、部署 Zookeeper 集群1.安装前准备1、关闭防火墙2、安装 JDK3、下载安装包 2.安装 Zookeeper1、修改配置文件2、拷贝配置…

被字节拷打了~基础还是太重要了...

今天分享一篇一位同学去字节面试的实习面经,技术栈是java,投了go后端岗位,主要拷打了 redismysql网络系统java算法,面试问题主要集中在 mysql、redis、网络这三部门,因为面试官是搞 go 的,java 只是随便问了…

【微信机器人开发

现在并没有长期免费的微信群机器人,很多都是前期免费试用,后期进行收费,或者核心功能需要付费使用的。 这时如果需要群机器人帮助我们管理群聊,建议大家使有条件的可以自己开发微信管理系统。了解微信群机器人的朋友都知道&#x…

Mysql数据库之事务

目录 一、事务的概念 二、事务的ACID特点 1.原子性(Atomicity) 2.一致性(Consistency) 3.隔离性(lsolation) 4.持久性(Durability) 三、并发访问表的一致性问题和事务的隔离级别 1.并发访…

Windows下 创建 FTP 服务器及相关设置

Windows 创建 FTP 服务器 1. 示例功能说明 FTP 服务器根路径下的目录: C:\USERS\SQQIAN\DESKTOP\FTP └─localuser├─FTP1 # 只有用户名为FTP1可以访问,读写均可│ FTP11.txt│├─FTP2 # 只有用户名为FTP2…

好家伙,9:00面试,9:06就出来了,问的实在是太...

从外包出来,没想到死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到2月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推我去…

zabbix-server监控mysql数据库及httpd服务、监控apache、监控ftp

目录 一、监控mysql数据库及httpd服务 1、为server.Zabbix.com添加服务模板 2、server.zabbix.com服务端 操作 3、编辑chk_mysql.sh脚本 4、server.zabbix.com测试 二、监控apache 1、获取键值 2、服务器操作 3、zabbix监控web端导入监控模板 4、server.zabbix.com添加…

前端多行文本省略号

.title {height: 4rem;line-height: 2rem;// 多行文本省略号overflow: hidden;font-size: 1.4rem;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;}

Pycharm远程服务器上运行程序报错:Can‘t get remote credentials for deployment server

一、问题描述: 二、解决方法: 1.依次选择 文件 -> 设置 -> 项目 -> Python 解释器,出现如下界面: 2. 点击python 解释器右侧的小齿轮,选择全部显示: 3. 在弹出的窗口中发现存在多个连接到同一个服务器的解释…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

FreeSWITCH的强插强拆等

记录如下&#xff1a; 强插强拆都是调用intercept这个appeavesdrop 监听appthree_way 三通app 强插强拆只是主体不同&#xff0c;尝试这样描述&#xff1a; 站在1001的立场上看&#xff0c;1002 bridge 1003&#xff0c; 1001呼入&#xff0c;执行intercept 1003-uuid&#…

chrome edge svg转png

chrome edge svg转png 生成SVG blockdiag Live Preview 导出png 截图&#xff1a; 左上角截取屏幕截图

sessionsManager io.undertow.server.session.InMemorySessionManager

sessionsManager io.undertow.server.session.InMemorySessionManager 记录一次性能优化记录基本情况错误表现错误提示问题原因解决办法 记录一次性能优化记录 基本情况 k8s集群&#xff0c;2台应用&#xff0c;nacos负载均衡&#xff0c;4只交易&#xff0c;2列表&#xff0…

【基于 GitLab 的 CI/CD 实践】02、gitlab-runner 实践

目录 一、gitlab-runner 简介 1.1 要求 1.2 特点 二、GitLab Runner 安装 2.1 使用 GItLab 官方仓库安装 2.2 使用 deb/rpm 软件包 2.3 在容器中运行 GitLab Runner 三、GitLab Runner 注册 3.1 GitLabRunner 类型 3.2 获取 runner token 获取 shared 类型 runner t…

数据结构——链表

数据结构——链表 链表&#xff08;Linked List&#xff09;是一种常见的数据结构&#xff0c;用于存储和组织数据。它由一系列称为节点&#xff08;Node&#xff09;的元素组成&#xff0c;每个节点包含数据和一个指向下一个节点的指针。相比于数组&#xff0c;链表具有动态插…

基于Gerapy部署分布式爬虫管理平台

文章目录 1. 服务器安装scrapyd1.1 scrapyd安装1.2 scrapyd配置允许外网访问1.3 服务器安全组开启端口1.4 服务器防火墙开启端口1.5 scrapyd测试 2. Gerapy 环境搭建2.1 gerapy安装2.2 gerapy测试2.3 项目部署2.4 定时任务2.5 线上代码修改 Gerapy是一个Python的分布式爬虫部署…