大家在开发项目的过程中,经常会使用注解来定义Bean和自动注入等,可以说注解方便了我们的开发与代码编写。Annotation(注解)是JDK1.5及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以@注解名在代码中存在的。根据注解参数的个数,可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,可以在编译时选择代码里的注解是否只存在于 源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。
使用@Order注解调整配置类加载顺序
@ControllerAdvice 注解的三种使用场景:
是一个增强的 Controller
- 全局异常处理
- 全局数据绑定
- 全局数据预处理
全局异常处理
可以实现接口的加解密:
@ControllerAdvice 注解 + 实现 RequestBodyAdvice 接口
第一种,直接在Controller层写@ExceptionHandler注解,对于指定异常,可以处理并返回一个视图或者body:
第二种,全局异常处理,通过@ControllerAdvice对所有Controller进行切面通知,可以指定父类
@ExceptionHandler可以指定父类异常
@ControllerAdvice(assignableTypes = HelloWorld.class)
public class ExceptionHanlderClass {
@ResponseBody
@ExceptionHandler(Exception.class)
public String handleExceptions(Exception e, HttpServletRequest req){
return req.getRequestURI() + "抛出一个异常" + e.getClass().getName() + e.getMessage();
}
}
全局数据绑定
全局数据绑定功能可以用来做一些初始化的数据操作,我们可以将一些公共的数据定义在添加了 @ControllerAdvice 注解的类中,
这样,在每一个 Controller 的接口中,就都能够访问导致这些数据。
全局数据预处理
大家感兴趣的也可以研究研究这篇博客
https://www.cnblogs.com/lenve/p/10748453.html