240
世界上有2种人,一种懂二进制,另一种不懂二进制。

spring boot注解-@RestControllerAdvice @ExceptionHandler,@InitBinder @ModelAttribute⽅法

@RestControllerAdvice是什么
@RestControllerAdvice是⼀个组合注解,由@ControllerAdvice、@ResponseBody组成,⽽@ControllerAdvice继承了
@Component,因此@RestControllerAdvice本质上是个Component,⽤于定义@ExceptionHandler,@InitBinder和
@ModelAttribute⽅法,适⽤于所有使⽤@RequestMapping⽅法。
@RestControllerAdvice的特点:
1. 通过@ControllerAdvice注解可以将对于控制器的全局配置放在同⼀个位置。
2. 注解了@RestControllerAdvice的类的⽅法可以使⽤@ExceptionHandler、@InitBinder、@ModelAttribute注解到⽅法上。
3. @RestControllerAdvice注解将作⽤在所有注解了@RequestMapping的控制器的⽅法上。
4. @ExceptionHandler:⽤于指定异常处理⽅法。当与@RestControllerAdvice配合使⽤时,⽤于全局处理控制器⾥的异常。
5. @InitBinder:⽤来设置WebDataBinder,⽤于⾃动绑定前台请求参数到Model中。
6. @ModelAttribute:本来作⽤是绑定键值对到Model中,当与@ControllerAdvice配合使⽤时,可以让全局的@RequestMapping都
能获得在此处设置的键值对

@ControllerAdvice
publicclass GlobalController{
(
)全局数据绑定
//
1
应⽤到所有
注解⽅法
//
@RequestMapping
此处将键值对添加到全局,注解了
的⽅法都可以获得此键值对
//
@RequestMapping
@ModelAttribute
publicvoidaddUser(Model model){
        model.addAttribute("msg","此处将键值对添加到全局,注解了@RequestMapping的⽅法都可以获得此键值对");
}
(
)全局数据预处理
//
2
应⽤到所有
注解⽅法,在其执⾏之前初始化数据绑定器
//
@RequestMapping
⽤来设置
//
WebDataBinder  
@InitBinder("user")
publicvoidinitBinder(WebDataBinder binder){
}
(
)全局异常处理
// 
3
应⽤到所有
注解的⽅法,在其抛出
异常时执⾏
//
@RequestMapping
Exception
定义全局异常处理,
属性可以过滤拦截指定异常,此处拦截所有的
//
value
Exception  
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
return"erro
  }
}

@ControllerAdvice可以指定 Controller 范围
basePackages: 指定⼀个或多个包,这些包及其⼦包下的所有 Controller 都被该 @ControllerAdvice 管理

@RestControllerAdvice(basePackages={"top.onething"})
@Slf4j
publicclass ExceptionHandlerAdvice {
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
return"error";
}
}

basePackageClasses: 是 basePackages 的⼀种变形,指定⼀个或多个 Controller 类,这些类所属的包及其⼦包下的所有
Controller 都被该 @ControllerAdvice 管理

@RestControllerAdvice(basePackageClasses={TestController.class})
@Slf4j
publicclass ExceptionHandlerAdvice {
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
return"error";
}
}

assignableTypes: 指定⼀个或多个 Controller 类,这些类被该 @ControllerAdvice 管理

@RestControllerAdvice(assignableTypes={TestController.class})
@Slf4j
publicclass ExceptionHandlerAdvice {
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
return"error";
}
}

annotations: 指定⼀个或多个注解,被这些注解所标记的 Controller 会被该 @ControllerAdvice 管理

@ControllerAdvice(annotations ={TestAnnotation.class})
@Slf4j
publicclass ExceptionHandlerAdvice {
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
return"error";
}

 



posted @ 2022-06-30 16:46  _Origin  阅读(204)  评论(0编辑  收藏  举报