@RestControllerAdvice注解作用和@ExceptionHandler全局异常配置

本文主要是介绍@RestControllerAdvice注解作用和@ExceptionHandler全局异常配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@RestControllerAdvice没有单用的。一般都是配合这三个注解才有作用:@ExceptionHandler、@InitBinder、@ModelAttribute。

如果想使用@ExceptionHandler(全局异常)、@InitBinder(请求方法之前的初始化)、@ModelAttribute(全局获取部门数据),同时他们三个运用也必须要有@RestControllerAdvice ,可以理解为为RequestController 和@Component合体的实现

@ExceptionHandler 全局异常配置

@ExceptionHandler一般做全局异常处

package com.dxt.common.exception;import com.dxt.common.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** ClassName: ComponentExceptionHandler* Package: com.dxt.dispatch.config.exception* Description: 全局异常处理* Date: 2023/3/28 15:17* Author: A乐神*/
@RestControllerAdvice
@Slf4j
public class CommonExceptionHandler {private final Pattern pattern = Pattern.compile(".*[a-zA-Z]+.*");/*** Description: 手动抛出的业务异常,即般情况下不用关心的异常* date: 2023/3/28 15:30* @author : A乐神*/@ExceptionHandler(value = BusinessException.class)public Result<?> businessExceptionHandler(BusinessException e) {log.error("BusinessException", e);return Result.error(e.getMessage());}/*** Description: 手动抛出(非业务异常)或者其他应用抛出的执行时异常,* 如果有msg 纯中文可以返回给用户否则不返回给用户,总是打印全部错误内容* date: 2023/3/28 15:31* @author : A乐神*/@ExceptionHandler(value = Exception.class)public Result<?> exceptionHandler(Exception e) {String message = e.getMessage();log.error("RuntimeException", e);if (StringUtils.isNotBlank(message)) {// 匹配不到英文则返回错误信息Matcher matcher = pattern.matcher(message);if (!matcher.matches()) {return Result.error(message);}}return Result.error();}
}

public class BusinessException extends RuntimeException {public BusinessException() {}public BusinessException(String message) {super(message);}
}

@ModelAttribute

把值绑定到Model中,使全局@RequestMapping可以获取到该值

    @ModelAttributepublic void addAttributes(Model model) {model.addAttribute("author", "Magical Sam");}

获取方式

@RequestMapping("/home")
public String home(ModelMap modelMap) {System.out.println(modelMap.get("author"));
}//或者 通过@ModelAttribute获取@RequestMapping("/home")
public String home(@ModelAttribute("author") String author) {System.out.println(author);
}

@InitBinder 全局请求方法前置处理(可以不看)

所有@RequestMapping注解方法,在其执行之前初始化数据绑定器,一般没人用

 @InitBinderpublic void initBinder(WebDataBinder binder) {}

这篇关于@RestControllerAdvice注解作用和@ExceptionHandler全局异常配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/496121

相关文章

mysql5.7.15winx64配置全过程

《mysql5.7.15winx64配置全过程》文章详细介绍了MySQL5.7.15免安装版的配置步骤,包括解压安装包、设置环境变量、修改配置文件、初始化数据目录、安装服务、启动数据库、登录及密码修改... 目录前言一、首先下载安装包二、安android装步骤1.第一步解压文件2.配置环境变量3.复制my-

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.