背景:
情况一:加@Transactional的注解方法A ,调用了本类的都加@Transactional注解的方法B和C。此种情况注解生效,报错回滚!
情况二:把A的注解去掉。此种情况注解不生效,没有回滚!
测试:(加日志,看console的输出,就可以知道有没有事务创建)
加配置
logback-spring.xml
<logger name="org.springframework.jdbc.datasource.DataSourceTransactionManager" level="DEBUG" /> 走此类的方法都输出日志
application-dev.yml
logging:
config: classpath:logback-spring.xml
情况一的时候,创建了一个事务,B和C的方法都没有创建事务。
情况二的时候,没有创建事务,验证了内部调用注解不生效的问题。
另,网上文档@Transational不生效还有几种情况,1 private修辞的方法不生效 2 方法中有try catch不生效,要有显示的异常才会被spring捕捉到,在catch中 throw new RunTimeException 或者setrollbackonly();