水印图片找不到和@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处删除文件才可以
222020-03-30 -
丶彦彦
2020-03-28
java将异常抛出给更上一层的调用者进行处理,你的generateThumbnail这个方法抛出异常,然后在继续抛出异常,所以事务会回滚
212020-03-29 -
慕慕65597133
2020-03-28
能不能把你的代码截图看一看
10
相似问题