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注解使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Spring5学习之JdbcTemplate详解

    Java Spring5学习之JdbcTemplate详解

    这篇文章主要介绍了Java Spring5学习之JdbcTemplate详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Spring框架如何使用P命名空间进行注入

    Spring框架如何使用P命名空间进行注入

    这篇文章主要介绍了Spring框架如何使用P命名空间进行注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • java如何判断一个数是否是素数(质数)

    java如何判断一个数是否是素数(质数)

    这篇文章主要介绍了java如何判断一个数是否是素数(质数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中关于 null 的几种处理方式详解

    Java中关于 null 的几种处理方式详解

    这篇文章主要介绍了Java中关于 null 的几种处理方式,关于 null ,你应该知道下面这几件事情来有效的了解 null ,从而避免很多由 null 引起的错误,具体细节跟随小编一起学习下吧
    2021-10-10
  • springboot跨域如何设置SameSite的实现

    springboot跨域如何设置SameSite的实现

    这篇文章主要介绍了springboot跨域如何设置SameSite的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • IDEA+GIT使用入门图文详解

    IDEA+GIT使用入门图文详解

    这篇文章主要介绍了IDEA+GIT使用入门详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • java高并发的并发级别详解

    java高并发的并发级别详解

    这篇文章主要介绍了java高并发的并发级别,内容十分丰富,在这里分享给大家,需要的朋友可以参考,希望能够给你带来帮助
    2021-10-10
  • Java加解密技术系列之RSA详解

    Java加解密技术系列之RSA详解

    出于安全考虑,网络的传输中经常对传输数据做加密和编码处理,本篇文章主要介绍Java加解密技术系列之RSA详解,非常具有实用价值,需要的朋友可以参考下。
    2016-10-10
  • java如何根据用户请求获取ip地址并解析省市信息

    java如何根据用户请求获取ip地址并解析省市信息

    根据当前用户本地IP地址,查询IP地址库,获取IP所在的省市信息,目前有多种方式实现该功能,这篇文章主要给大家介绍了关于java如何根据用户请求获取ip地址并解析省市信息的相关资料,需要的朋友可以参考下
    2023-12-12
  • Java基于余弦方法实现的计算相似度算法示例

    Java基于余弦方法实现的计算相似度算法示例

    这篇文章主要介绍了Java基于余弦方法实现的计算相似度算法,简单说明了余弦相似性的概念、原理并结合实例形式分析了java实现余弦相似性算法的相关操作技巧,需要的朋友可以参考下
    2017-08-08

最新评论