浅析@ControllerAdvice 注解

本文探讨了Java注解在项目开发中的应用,重点介绍了@Order用于配置类加载顺序,以及@ControllerAdvice在全局异常处理、数据绑定和预处理中的三种关键场景。同时,讲解了如何利用@ExceptionHandler接口实现加密功能。深入理解这些注解有助于提升代码组织和维护效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家在开发项目的过程中,经常会使用注解来定义Bean和自动注入等,可以说注解方便了我们的开发与代码编写。Annotation(注解)是JDK1.5及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以@注解名在代码中存在的。根据注解参数的个数,可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,可以在编译时选择代码里的注解是否只存在于 源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。

使用@Order注解调整配置类加载顺序
@ControllerAdvice 注解的三种使用场景:

是一个增强的 Controller

  1. 全局异常处理
  2. 全局数据绑定
  3. 全局数据预处理

全局异常处理

可以实现接口的加解密:
@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值