Spring MVC Controller Transactional

时间:2013-09-05 10:10:22

标签: java spring-mvc transactions

我正在尝试使用@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,但事实并非如此,任何帮助都会非常感谢?

1 个答案:

答案 0 :(得分:4)

不要使控制器具有事务性。事务是针对服务层的。通常的做法是有一个基本控制器,其他控制器扩展并包含错误处理 - 在这种情况下,可以返回不同的异常消息。

您正在拔掉客户端上的网线,并期待服务器上出现异常?这没有意义。