@Transactional 放到controller层才有用 Service层就失效~
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootApplicationTests {
@Autowired
private UserService userService;
@Transactional
@Test
public void test(){
userService.insert(new User("D1D22D22","1"));
userService.insert(new User("AAA111111111111111111111111111111111111111111111111111","1"));
}
}
这样没问题
@Service public class UserService { @Resource public UserMapper userMapper; @Transactional public void insert(User user) { //userMapper.insert(user); userMapper.insert(new User("D1D22D22","1")); userMapper.insert(new User("AAA111111111111111111111111111111111111111111111111111","1")); } }
这样就不可以~
有人遇到过没? 再问一下 springboot 可以用 transactionInterceptor 来统一配置事务吗?
记录一下~ 结果是shiro的原因 发现去掉ShiroConfig 就正常了 ,原因是在ShiroRealm中注入了service 导致service 方法的事务都失效了,发现shiro官方demo注入的dao 修改成注入dao就可以了~
######怎么判断不行?? 第二个问题,spring的事务本来和拦截器就是统一原理呀,aop######谢谢回答 我在数据库设置了字段长度 超长就应该回滚 第一个会回滚 第二个不会######你事务配置有问题吧······boot 配置事务很简单的····
######我也碰到这个问题了,排查了两天,单元测试加上了@Transactional可以,加到Controller层也可以,明明service层已经增加了事务注解就是不可以,一点点调试,声明我是spring boot,在shiroConfig中配置了从数据库加载权限url,动态配置shiroFilter, 在shiroConfig类中引入PermissionSerice为空,后来我就放到shiroFilter的方法上,可以引入,但是导致了这个service的事务丢失了。目前还没有找到解决方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。