Springにおけるグローバル異常処理@Exception Handler

1257 ワード

最近プロジェクトの中でSpringbootとSpringに関するExceptionの処理を整理しました.記録して他の必要な人にも分けます.
全体の異常処理を学ぶ前に、まず二つの注釈を調べます. @Controller Adviceと @Exception Handler
 
@Controller Advice: Spring beansとして明示的に宣言することができます.またはクラスパスを通して自動的に検出されます.
実は理解できます. @Controller Adviceと @Component 同様に依存注入が可能です.
 
@Exception Handler 受け入れて対応します @Request Mapping メソッドに投げられた異常.以下のコードはController内部で定義されたものを示しています. @Exception Handler 方法.

@Controller
public class SimpleController {


    @ExceptionHandler(IOException.class)
    @RequestMapping("/test")
    public ResponseEntity handleIOException(IOException ex) {
        
        return responseEntity;
    }
}
もちろんです.グローバルの異常処理をすると言いました.上はただ一つの方法のExceptionを処理しました.これは私達が望んだのではありません.グローバルExceptionは下を見てみます.

/**
 * @author: ZhangGuihong
 * @Date: 2018/9/19 22:59
 */
@ControllerAdvice
public class ExceptionHandler {

    // Exception.class            ,                   
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Object ExceptionHandler(Exception e) {

        
        //                    
        return "Samething is wrong!";
    }
}
    web        Controller                ,              .