@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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技