Spring中同一个service调用方法不回滚的解决方法

在java配置类上添加注解@EnableAspectJAutoProxy(exposeProxy = true)方式暴漏代理对象,然后在service中通过代理对象AopContext.currentProxy()去调用方法。

@Service
public class HelloWorldServiceImpl implements HelloWorldService {
    @Autowired
    private BlogRepository blogRepository;

    @Override
    public void a(BlogEntity blogEntity) throws Exception {
        ((HelloWorldService) AopContext.currentProxy()).b(blogEntity);
    }

    @Transactional(rollbackFor = Exception.class)
    @Override
    public void b(BlogEntity blogEntity) throws Exception {
        blogRepository.save(blogEntity);
        throw new Exception("错误");
    }
}

 

你可能感兴趣的:(java)