开发者社区> 问答> 正文

springboot 事务配置 - java报错

@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  来统一配置事务吗?

展开
收起
montos 2020-05-31 13:14:16 434 0
1 条回答
写回答
取消 提交回答
  • 记录一下~  结果是shiro的原因  发现去掉ShiroConfig 就正常了 ,原因是在ShiroRealm中注入了service 导致service 方法的事务都失效了,发现shiro官方demo注入的dao  修改成注入dao就可以了~

    ######怎么判断不行?? 第二个问题,spring的事务本来和拦截器就是统一原理呀,aop######谢谢回答 我在数据库设置了字段长度 超长就应该回滚 第一个会回滚 第二个不会######

    你事务配置有问题吧······boot 配置事务很简单的····

    ######

    我也碰到这个问题了,排查了两天,单元测试加上了@Transactional可以,加到Controller层也可以,明明service层已经增加了事务注解就是不可以,一点点调试,声明我是spring boot,在shiroConfig中配置了从数据库加载权限url,动态配置shiroFilter, 在shiroConfig类中引入PermissionSerice为空,后来我就放到shiroFilter的方法上,可以引入,但是导致了这个service的事务丢失了。目前还没有找到解决方法。

    2020-05-31 13:14:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载