springboot 控制器通知
**************************
相关注解
@ControllerAdvice:注解在类上,可对指定包、指定类进行相应处理
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ControllerAdvice {
@AliasFor("basePackages")
String[] value() default {};
@AliasFor("value")
String[] basePackages() default {};
Class<?>[] basePackageClasses() default {};
Class<?>[] assignableTypes() default {};
Class<? extends Annotation>[] annotations() default {};
}
@ExceptionHandler:注解在方法上,对指定异常进行处理
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExceptionHandler {
Class<? extends Throwable>[] value() default {};
}
**************************
示例
***************
controller 层
HelloController
@RestController
public class HelloController {
@RequestMapping("/hello8")
public String hello8(@RequestParam("id") Integer id){
if (id.equals(0)){
throw new RuntimeException("出错了");
}
System.out.println("控制器正常执行");
return "success";
}
}
*********************
advice 层
CustomControllerAdvice
@ControllerAdvice("com.example.demo.controller")
public class CustomControllerAdvice {
@ExceptionHandler(RuntimeException.class)
public void handleException(Exception e){
System.out.println(e.getMessage());
}
}
**************************
测试输出
localhost:8080/hello8?id=1
控制器正常执行
loalhost:8080/hello8?id=0
出错了