【发布时间】:2018-09-12 20:25:08
【问题描述】:
我有很多这样的控制器
@RestController
@RequestMapping("/contracts")
public class ContractsController {
@Autowired
ContractsService service;
@PostMapping("/selectAll")
public WebMessageModel selectAll(@RequestBody ContractFiltersInputModel inputModel) {
return new WebMessageModel(true, service.selectAll(inputModel));
}
}
我还有另一个控制器
@Controller
public class BaseController {
private static Logger logger = LoggerFactory.getLogger(IndexController.class);
@RequestMapping
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
logger.info("-----requestURI => " + requestURI + ", requestURL => " + requestURL);
request.getRequestDispatcher(requestURI).forward(request, response);
logger.info("-----response has been commited");
} catch (Throwable t) {
t.printStackTrace();
request.getRequestDispatcher("/handleException").forward(request, response);
}
}
}
我需要所有传入的请求都通过这个 BaseController 才能创建一个全局 TRY-CATCH 块。我该如何实施?这种方法真的是个好主意吗?也许还有其他一些很棒的方法?
【问题讨论】:
-
如果你想处理异常考虑使用@ControllerAdvice
标签: spring spring-mvc controller