transactional
@transactional底层实现是SpringAOP技术,而SpringAOP技术是动态代理;
1. 静态方法;
2. 非public方法;
3. 自调用方法:即,一个类的一个方法调用自身另外一个方法,如下:
package com.cmb.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.cmb.mAPPer.RoleMapper;
import com.cmb.pojo.Role;
import com.cmb.service.roleservice;
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleMapper roleMapper = null;
@Transactional(propagation = Propagation.requires_NEW, isolation = Isolation.READ_COMMITTED)
public int insertRole(Role role) {
return roleMapper.insertRole(role);
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public int insertRoleList(List<Role> roleList) {
int count = 0;
for(Role role : roleList){
try{
//调用自身类的方法,产生自调用问题
count+= insertRole(role);
}catch(Exception e){
e.printstacktrace();
}
}
return count;
}
}
其中 ,
//调用自身类的方法,产生自调用问题
count+= insertRole(role);
会出现此问题。
相关阅读
需要在Transactional注解指定rollbackFor或者在方法中
需要在Transactional注解指定rollbackFor或者在方法中显示的rollback 芥末无疆sss 关注2018.02.14 01:53 字数 842 阅读 39评
关于Spring注解式事务@Transactional的简单描述
一、背景: 目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。 在测试事务回滚的过程中发现如下现象: t
@Transactional 概述 @Transactional 是声明式事务管理 编程中使用的注解 添加位置 接口实现类或接口实现方法上,而不是接口类