请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

3回答

翔仔 2020-03-29 03:29:40

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

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

2 回复 有任何疑惑可以回复我~
  • 提问者 qq_慕运维4078601 #1
    不好意思老师,我设置了(rollbackfor=Exception.class) ,数据库仍然会添加记录,这是怎么回事呢
    回复 有任何疑惑可以回复我~ 2020-03-29 13:55:04
  • 翔仔 回复 提问者 qq_慕运维4078601 #2
    估计相关的异常已经被吞掉了,就是没抛给service层,并且service层也没做处理,建议同学可以把异常一直往外抛
    回复 有任何疑惑可以回复我~ 2020-03-30 01:59:33
丶彦彦 2020-03-28 13:21:30

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

2 回复 有任何疑惑可以回复我~
  • 翔仔 #1
    感谢同学的给力支持
    回复 有任何疑惑可以回复我~ 2020-03-29 03:29:57
慕慕65597133 2020-03-28 13:11:23

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

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信