首先你要明白spring的AOP不是对servic的每个方法都添加事务,而是根据你在service层写的方法名字的前缀来指定添加,比如
这上面2行就是默认添加事务的配置文件,很明显事务只对于find和query前缀的方法才添加,当然i也可以手动的添加,但实际开发项目中都是配置文件,默认添加的。
那问题来了 如果像你那样在service层调用了find方法再调用其它service层的query方法会不会冲突?是不会冲突的,因为一个session可以对应多个事务,当像你这种情况一个session要对应2个以上事务时候,根据spring SessionFactory配置文件 ,从第二个事务都嵌套在第一个find事务里。就是说后面的事务都包含在find方法的事务里。所以不冲突,我上面代码中的
propagation="REQUIRED"就是关键字,说明第二个事务开始都包含在第一个事务里