水印图片找不到和@Transactional事务回滚未生效

来源:4-5 店铺注册之Service层的实现

qq_慕运维4078601

2020-03-28

图片描述
问题1:在视频中,由于没有将watermark.jpg放入test目录下的resources文件夹中,抛出了IIOException找不到的异常,后面将水印图片放入后还是抛出此异常,我打印出的basepath = ‘/home/zjc/IdeaProjects/o2o/target/test-classes/’。使用的idea开发,请老师帮忙看一下为什么还是找不到
图片描述
问题2:因为找不到水印图片抛出了IIOException异常,按道理来说没有特殊配置的前提下,不是只有抛出RuntimeException异常时才会将数据库进行事务回滚吗,我看视频中老师出现了这个IIOException异常,数据库却没有插入这条记录。而我在测试多次后发现数据库重复插入了好多条记录(只是插入记录,文件里没有生成最终的图片)。这是为什么呢?
在视频的最后老师故意抛出了RuntimeException演示事务回滚的功能,我跟着做实现了。现在就是不明白为什么视频中的抛出的IIOException异常,老师的数据库没有插入记录。

写回答

3回答

翔仔

2020-03-29

同学好,问题1,建议改成绝对值路径读取水印图片,后续2。0我们也这么改的,basePath由于不通同学的环境不同,可能会出现错误。

问题2,都不会回滚的,因为默认认的是runtimeexception,除非同学设置的是Exception(rollbackfor=Exception.class) 就会回滚所有异常,但是这个回滚只是针对数据库,不是针对文件的,针对文件得在catch处删除文件才可以

2
2
翔仔
回复
qq_慕运维4078601
估计相关的异常已经被吞掉了,就是没抛给service层,并且service层也没做处理,建议同学可以把异常一直往外抛
2020-03-30
共2条回复

丶彦彦

2020-03-28

java将异常抛出给更上一层的调用者进行处理,你的generateThumbnail这个方法抛出异常,然后在//img1.sycdn.imooc.com/szimg/5e7ede820912fb1308270164.jpg继续抛出异常,所以事务会回滚

2
1
翔仔
感谢同学的给力支持
2020-03-29
共1条回复

慕慕65597133

2020-03-28

能不能把你的代码截图看一看

1
0

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程