Я делаю веб-сервис, используя Spring MVC.Контроллеры вызываются пользователем напрямую (через сервлет despatcher), а ответ возвращается в виде JSON.Я думаю, что использование контроллеров с помощью аннотаций очень удобно, но я нахожу довольно скучное исключение для каждого контроллера.Исключения всегда одинаковы, а также ответ для каждого исключения одинаков, так что я могу определить, как перехватить их только один раз вместо каждого контроллера?Я думал о чем-то вроде фильтра, но, может быть, это не очень хорошая идея ... Любой намек?
Теперь мои контроллеры выглядят так:
@Controller
@RequestMapping("/do")
@PreAuthorize("hasRole('ROLE_USER')")
public class UselessController {
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@PreAuthorize("#bar == principal.bar")
public ResponseEntity foo(@RequestParam int bar) {
try {
//do something
} catch (SomeTypeOfException stExc) {
return new ResponseEntity(HttpStatus.FORBIDDEN);
} catch (NoResultException nrExc) {
return new ResponseEntity(HttpStatus.PRECONDITION_FAILED);
} catch (Exception exc) {
return new ResponseEntity(HttpStatus.METHOD_FAILURE);
}
return new ResponseEntity(HttpStatus.OK);
}