我有一个用@Transaction
注释的Spring MVC控制器,在某些输入下我需要回滚事务。
据我了解,触发回滚的正确方法是从控制器中抛出异常。
但是如果我从控制器抛出异常,我将无法从控制器返回ModelAndView
对象。
如何在控制器中触发回滚,同时仍提供要呈现的ModelAndView
?
答案 0 :(得分:2)
例外是适当的路线。 Spring也可以map exceptions to views。这可能是你想要做的。
答案 1 :(得分:2)
首先,我不认为在控制器方法上使用@Transaction
是一件好事。最好将事务逻辑保留在“服务层”中并在那里使用@Transaction
注释。
但如果您仍想在控制器上使用@Transaction
,请查看org.springframework.web.servlet.handler.SimpleMappingExceptionResolver