[JSR303] AOP切面编程思想 @RestControllerAdvice 实现处理统一的异常处理
Posted on 2022-09-18 18:02 林安静 阅读(157) 评论(0) 编辑 收藏 举报笔者注:@RestControllerAdvice 比 @ControllerAdvice多一个@Responsebody注解,即restful风格,方便内部method不用反复加@Responsebody注解
另外,下面图片处无需再加@Component注解,@ControllerAdvice已包含
JSR303
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。
而JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
作者:谁在烽烟彼岸
链接:https://www.jianshu.com/p/554533f88370
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
简单介绍
@RestControllerAdvice是在Spring框架3.2新增的的注解
可以用来定义@ExceptionHandler,@InitBinder,@ModelAttribute,并应用到@RequestMapping中
使用原因
在统一异常处理时,如果每一个controller的每一个RequestMapping都进行异常的捕捉和处理,会造成代码的冗余,不方便维护,所以基于面向切面编程的思想,给这些处理异常的代码抽取出来.
具体实现
创建一个类,在类上加上@RestControllerAdvice或者@ControllerAdvice(这两者间有区别)实现一个切面,加上@Component作为一个组件加入ioc容器.
创建捕捉和处理统一异常的方法,方法上加上@ExceptionHandler,顾名思义,异常处理器,此注解需要value值,值是你想捕捉的异常的类型的字节码,并且方法也有参数,参数是此异常类的对象
可以处理多种异常,因为异常的种类,可以选择性的捕捉和处理异常,不同的异常给出不同的处理了,在处理异常时有一点需要注意,如果Exception异常和它的子类,更加范围小的异常同时存在时,会走范围小更精确的异常,并且处理掉后不会由Exception异常处理.
代码实现
作者:Ycy_
链接:https://www.jianshu.com/p/696e978aa6b3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。