Spring事务失效的场景

1.Spring只会对RuntimeException和Err的子类进行检查

原因:像检查异常它是不会回滚的.如:FileNotFoundException

解决办法:配置参数rollbackFor=异常类.class 指定检查异常 或者改成顶级Exception.class

2.业务内方法自己进行try-catch包住,导致不能正常回滚

原因:事务通知只有自己捕捉到了异常才能进行回滚处理,如果是自己处理的,就不会进行回滚.(相当于,事务的异常在最底层,如果外面的异常捕捉了,导致异常无法到最底层,所以底层不知道出现了异常)

解决办法:1.自己在catch块里面手动把异常抛出去,2.使用事务异常通知,也是在catch语句块里面加=>TransactionInterceptor.currentTransactionStatus().setRollbackOnly();

3.aop切面的顺序导致事务不能正确回滚

原因:事务的优先级最低,但是如果自定义的切面的优先级和他一样,则还是自定义切面在内层,这时如果抛出异常,被自定义的切面捕获了, 事务就没有收到异常通知,

解决办法:1.自己在catch块里面手动把异常抛出去,2.使用事务异常通知,也是在catch语句块里面加=>TransactionInterceptor.currentTransactionStatus().setRollbackOnly();(同2一致)

4.@Transactional 必须加在public方法上

原因:Spring默认@Transactional必须加在public方法上

5.父子容器导致事务失效

原因:在传统的ssm整合的时候会有两个容器,就会产生,有两个相同service

解决办法:不要用父子容器,springboot没有这个父子容器

6.调用本类方法导致传播行为失效,使用this或者直接调

原因:本类方法调用不经过代理,因此无法增强

解决办法:1.使用AopContext.currentProxy(),好像要配置什么东西.拿到代理对象.2.改变调用方式

7.@Transactional没有保证原子行为

在多线程情况下:你查询的时候,余额是够的,但是下面做了修改,修改过后并没有提交,,就是因为select不会让其他线程阻塞.

原因:事务的原子性仅包含insert.update.delete.select...forupdate语句,select方法并不会导致其他线程阻塞

解决办法:在你的select语句后面加上for update,它就不会查询当前正在执行的事务了

8.@Transactional方法导致的synchronized失效

原因:synchronized保证的仅是目标方法的原子性,环绕目标方法的还有commit操作,它们斌没有在sync块中=>synchronized方法只包含了方法本身,但是commit行为,并不在方法体内,所以会失效.

解决办法:1.扩大synchronized范围=>扩到到调用方,谁调用就把谁扩起来.2.select语句后面加上for update

 

### 计算机视觉领域2022年的期刊论文 在计算机视觉领域,2022年有许多重要的研究成果发表于顶级学术期刊和会议上。这些成果涵盖了广泛的子领域,包括但不限于图像识别、目标检测、语义分割以及三维重建等。 #### 顶级期刊中的重要文章 《International Journal of Computer Vision》(IJCV) 是该领域的权威期刊之一,在2022年继续发表了多篇高质量的研究工作[^1]。例如,“Learning Representations for Image Restoration with Asymmetric Loss Functions” 提出了通过不对称损失函数改进图像恢复技术的新方法[^3]。 另外,《IEEE Transactions on Pattern Analysis and Machine Intelligence》(TPAMI),作为模式分析机器智能方向最具影响力的期刊,也在这一年贡献了许多突破性的理论进展。其中一篇名为 “Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges”的综述性文章全面总结了几何深度学习的发展现状及其未来趋势。 #### 主要国际会议上的亮点研究 除了传统意义上的同行评议期刊外,年度大型研讨会也是获取最新科研动态的重要渠道。CVPR (Conference on Computer Vision and Pattern Recognition), ECCV (European Conference on Computer Vision) 和 ICCV (International Conference on Computer Vision) 均属于此类活动中的佼佼者。尽管具体时间跨度可能略有不同,但它们通常都会覆盖整个自然年内最前沿的技术探索实例[^2]。 对于希望深入了解某一方面专业知识的人来说,参加上述任一形式的知识分享环节都将是非常有益的经历;而对于那些正在寻找特定主题下精确匹配资料的朋友来说,则建议利用Google Scholar或者Microsoft Academic这样的平台进行更加精准的目标定位查询操作。 ```python import requests from bs4 import BeautifulSoup def search_papers(keyword, year="2022"): url = f"https://scholar.google.com/scholar?q={keyword}+{year}&hl=en&as_sdt=0,5" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') papers = [] for item in soup.select('.gs_ri'): title = item.find('h3').text.strip() link = item.find('a')['href'] snippet = item.find(class_='gs_rs').text.strip() if item.find(class_='gs_rs') else '' paper_info = { "title": title, "link": link, "snippet": snippet } papers.append(paper_info) return papers papers = search_papers("computer vision", "2022") for idx, paper in enumerate(papers[:5]): print(f"{idx + 1}. {paper['title']}\n Link: {paper['link']}\n Snippet: {paper['snippet']}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值