常见用法:

    1. 配合 @ExceptionHandler 实现全局异常处理
    2. 配置 @InitBinder 实现自定义全局类型转换器

    官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-initbinder

    1、全局异常处理器:

    1. @ControllerAdvice
    2. @Order(0) // 定义优先级:数值越小,优先级越高
    3. public class MyRuntimeExceptionHandler {
    4. @ExceptionHandler(RuntimeException.class)
    5. public ResponseEntity<String> runtimeExceptionHandler(RuntimeException ex) {
    6. // 将服务器异常信息转换成json格式抛出去
    7. return ResponseEntity.status(HttpStatus.ACCEPTED).header("Content-Type","application/json;charset=utf-8").body(ex.getMessage());
    8. }
    9. @ExceptionHandler(Throwable.class)
    10. public ResponseEntity<String> exception(Throwable t){
    11. return ResponseEntity.status(404).header("Content-Type","application/json;charset=utf-8").body(t.getMessage());
    12. }
    13. }

    2、绑定全局类型转换器

    1. public class MyDateFormatter {
    2. // 这里value参数用于指定需要绑定的参数名称,如果不指定,则会对所有的参数进行适配,
    3. // 只有是其指定的类型的参数才会被转换
    4. @InitBinder
    5. public void initBinder(WebDataBinder binder) {
    6. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    7. dateFormat.setLenient(false);
    8. binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
    9. }
    10. }

    测试:

    1. @RequestMapping("/str2")
    2. public void demo(Date date) {
    3. System.out.println(date);
    4. }