Spring事务,如果A调用B(对B进行了事务配置),为什么不起作用,如果对A配置事务就起作用,
public class MyEntry implements IBaseService{
/**
* 对外唯一入口
*/
public String A(String jsonStr) throws Exception{
}
//此处需要事务
private String B(UserInfo user, UserDetail detail) throws DBException{
baseDao.saveObject(user);
baseDao.saveObject(detail);
}
}
问题描述
如果我在配置事务的时候,如下
<tx:method name="A" propagation="REQUIRED" />
那么如果baseDao.saveObject(detail)异常,整个B方法全部回滚。没问题
但是
如果我在配置事务的时候仅仅对 name="B",并且不对A进行配置事务,如下:
<tx:method name="B" propagation="REQUIRED" />
那么如果baseDao.saveObject(detail)异常,方法B不能全部回滚(也就是说虽然baseDao.saveObject(detail)没有保存成功,但是baseDao.saveObject(user)保存成功了)
请问这个问题到底怎么回事呢。
根据 PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。难道SPRING的这个没有起到作用吗?