我正在尝试使用@Transactional注释的Spring MVC Controller方法如果在方法返回之前拉网络客户端上的网络电缆回滚,我似乎无法让它工作,这里是我想要实现的一个例子。
@Transactional(rollbackFor = IOException.class)
@RequestMapping(value = "/test")
public @ResponseBody
Integer testMethod(HttpServletResponse response) throws Exception {
LOG.debug("Put breakpoint here, and pull network cable on client...");
//IMHO this should throw an IOException, but it isn't doing?
response.getOutputStream();
return 10;
}
因此,如果我在日志语句中放置一个断点,然后拔掉客户端上的网线然后播放,我希望从response.getOutputStream()获得IOException,但事实并非如此,任何帮助都会非常感谢?
答案 0 :(得分:4)
不要使控制器具有事务性。事务是针对服务层的。通常的做法是有一个基本控制器,其他控制器扩展并包含错误处理 - 在这种情况下,可以返回不同的异常消息。
您正在拔掉客户端上的网线,并期待服务器上出现异常?这没有意义。