私はSpring MVCを使用してWebサービスを作成しています。コントローラはユーザーによって(despatcherサーブレットを介して)直接呼び出され、レスポンスはJSONとして返されます。私は注釈によるコントローラの使用は非常に便利だと思いますが、私は各コントローラで非常に退屈な例外を見つける。例外は常に同じで、各例外に対する応答も同じです。したがって、各コントローラではなく1回だけ捕捉する方法を定義できますか? 私はフィルタのようなものを考えていましたが、これは良い考えではないかもしれません...何かヒント?コントローラの例外捕捉を簡略化する
は今私のコントローラは、次のようになります。あなたが探しているもの
@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);
}