是的,正如标题描述的这样,我试图通过这篇文章,教会你如何阅读源码。
事情大概是这样的,前段时间,我收到了一个读者发来的类似于这样的示例代码:
他说他知道这三个案例的回滚情况是这样的:
- insertTestNoRollbackFor:不会回滚
他说在没有执行代码之前,他也知道前两个为什么一个不会回滚,一个会回滚。因为抛出的异常和 @Transactional 里面的注解呼应上了。
但是第三个到底会不会回滚,没有执行之前,他不知道为什么会回滚。执行之后,回滚了,他也不知道为什么回滚了。
我告诉他:源码之下无秘密。
让他去看看这部分源码,理解它的原理,不然这个地方抛出一个其他的异常,又不知道会不会回滚了。
但是他说他完全不会看源码,找不到下手的角度。