本来事情很简单的,事务传播属性:
NEVER(TransactionDefinition.PROPAGATION_NEVER)
Execute non-transactionally, throw an exception if a transaction exists. Analogous to EJB transaction attribute of the same name.
翻译:非事务方式执行,如果存在事务就抛出异常
很好理解的,如果当前线程存在事务,那么运行到这个方法,就会抛出异常
第一步实验:正常情况下,开启事务,然后抛出异常
使用Idea工具调用接口,结果正常
数据库结果:
说明test()方法是开启了事务的!!!
第二步:加入注解
@Transactional(propagation = Propagation.NEVER)
取消异常
重新编译,好像不行,直接重启服务!!!
结果:
fuck!!!为什么没有抛出异常呢??
网上找了一下原因:@Transactional批注仅适用于Spring代理对象,修改代码,不是直接调用test2(),而是通过服务的代理对象去调用test2(),这样就可以实现了