1.controller中只允许有一个sevice调用一个方法,即主方法
2.主方法对应的sevice为主service,主service应该调用具体实现业务逻辑的子service,以使事务切面生效 3.主方法无事务标签时, a.调用具体子service中的方法(必须加事务),若该方法事务标签为REQUIRES_NEW或者REQUIRED, 则该方法为单独的事务,有异常抛出时,事务会回滚。 b.如果调用主方法中的方法, 若该方法没有加事务标签,则走数据库事务(如果数据库事务时默认自动提交,则立刻入库) //若该方法有加事务标签,所加事务标签完全不起作用,仍然走数据库事务//!4.主方法有事务标签时,主service中的所有非主方法都跟主方法同属一个事务,非主方法所加事务标签,都不起作用
都跟主方法同属一个事务主方法中有调用其他service中的方法的,其他service方法A1若加REQUIRES_NEW标签,则为独立事务,
该方法若有运行时异常,则会使本方法和主方法全部回滚。 若在主方法A1之后还有主方法中方法B2,若B2抛出运行时异常,则主事务回滚,A1进数据库 总结: 1.主方法无事务标签时,调用其他sevice中的方法,无论为REQUIRES_NEW或者REQUIRED,都为独立的事务 2.主方法有事务标签时,调用其他sevice中的方法,若为REQUIRES_NEW,则为独立事务,该事务回滚,主事务也会回滚; 若为REQUIRED,则和主方法共用一个事务