Spring中的@RestControllerAdvice注解使用方法解析

 更新时间:2024年01月19日 08:52:34   作者:珠光  
这篇文章主要介绍了Spring中的@RestControllerAdvice注解使用方法解析,@RestControllerAdvice是Controller的增强 常用于全局异常的捕获处理 和请求参数的增强,需要的朋友可以参考下

@RestControllerAdvice注解使用

@RestControllerAdvice是Controller的增强 常用于全局异常的捕获处理 和请求参数的增强

继承@ControllerAdvice、@ResponseBody等注解 它返回的数据是JSON格式的。

异常案例

@RestControllerAdvice
@Slf4j
public class ControllerExceptionHandleAdvice {
	@ExceptionHandler
	public R handler(HttpServletRequest req, HttpServletResponse res, Exception e) {
		if (e instanceof NullPointerException) {
			log.error("请求的方法名为:{},发生空指针异常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
			return R.fail("执行异常");
		} else if (e instanceof DataIntegrityViolationException) {
			String stackTrace = ExceptionUtils.getStackTrace(e);
			log.error("请求的方法名为:{},数据库访问异常:{}", req.getRequestURI(), stackTrace);
			if (stackTrace.contains("唯一性约束")) {
				return R.fail("数据不能重复!");
			} else if (stackTrace.contains("非空约束")) {
				return R.fail("必填项不能空!");
			} else {
				return R.fail("数据库异常");
			}
		}  else if (e instanceof SQLException) {
			log.error("请求的方法名为:{},数据库访问异常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
			return R.fail("数据库访问执行异常");
		} else {
			log.error("请求的方法名为:{},服务器代码发生异常,请联系管理员:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
			return R.fail("服务器代码发生异常,请联系管理员");
		}
	}
}

请求参数案例

@Slf4j
@RestControllerAdvice
public class MyHandler {
     /**
     * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
     *
     * @param binder
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        log.info("初始化数据绑定器");
        log.info(binder.getFieldDefaultPrefix());
        log.info(binder.getFieldMarkerPrefix());
    }
    /**
     * 把值绑定到Model中,使全局@RequestMapping可以获取到该值
     * @param model
     */
    @ModelAttribute
    public void addAttributes(Model model) {
        log.info("添加name参数");
        model.addAttribute("name", "allen");
    }
 }

到此这篇关于Spring中的@RestControllerAdvice注解使用方法解析的文章就介绍到这了,更多相关@RestControllerAdvice注解使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何更改SpringBoot TomCat运行方式

    详解如何更改SpringBoot TomCat运行方式

    这篇文章主要介绍了详解如何更改SpringBoot TomCat运行方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java设计模式七大原则之开闭原则详解

    Java设计模式七大原则之开闭原则详解

    开闭原则,又称为OCP原则,即一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。本文将详细介绍Java设计模式七大原则之一的开闭原则,需要的可以参考一下
    2022-02-02
  • SparkSQL使用快速入门

    SparkSQL使用快速入门

    spark SQL是spark的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象就是DataFrame。这篇文章主要介绍了SparkSQL使用快速入门,需要的朋友可以参考下
    2021-08-08
  • Java中实现String.padLeft和String.padRight的示例

    Java中实现String.padLeft和String.padRight的示例

    本篇文章主要介绍了Java中实现String.padLeft和String.padRight,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 详解Java继承中属性、方法和对象的关系

    详解Java继承中属性、方法和对象的关系

    这篇文章主要帮助大家详细介绍了Java继承中属性、方法和对象的关系,感兴趣的朋友可以参考一下
    2016-03-03
  • Java学习-打印1-1000以内的水仙花数代码实例

    Java学习-打印1-1000以内的水仙花数代码实例

    这篇文章主要介绍了Java打印1-1000以内的水仙花数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java实现冒泡排序算法

    Java实现冒泡排序算法

    这篇文章主要为大家详细介绍了java实现冒泡排序算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • java 数据结构之堆排序(HeapSort)详解及实例

    java 数据结构之堆排序(HeapSort)详解及实例

    这篇文章主要介绍了java 数据结构之堆排序(HeapSort)详解及实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • mybatis插入数据后返回自增主键ID的两种实现方式

    mybatis插入数据后返回自增主键ID的两种实现方式

    这篇文章主要介绍了mybatis插入数据后返回自增主键ID的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java判断字节流是否是 UTF8编码方法示例

    Java判断字节流是否是 UTF8编码方法示例

    这篇文章主要我大家介绍了Java判断字节流是否是 UTF8编码方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论