spring怎么使用注解返回bean
如何处理SpringBoot全局异常与数据校验?
如何处理SpringBoot全局异常与数据校验?
这个问题其实是两个方面,一是SpringBoot的全局异常处理方式,二是SpringBoot的数据校验,让我们一一来进行。
全局异常处理,实际上便是需要我们对系统运行中出现的异常进行一个统一的捕获和处理,具体的处理逻辑则根据业务来进行,可以进行日志记录,也可以进行前端的返回,再由前端进行信息的提示等。
那如何来实现这样一个全局异常的捕获和处理呢?
在SpringBoot中,有一个注解——@ControllerAdvice,该注解所修饰的bean代表了其开启了全局异常的捕获,我们只需要在这个被注解修饰的类中,自定义一个方法并使用@ExceptionHandler注解,而且需要定义要捕获异常的类型即可对这些捕获的异常进行统一的处理。
在实际生产中,我们一般会为业务定义一些自定义的异常,用于捕获在业务中的不合理的情况,如数据异常等;随后通过@ControllerAdvice定义的类中的@ExceptionHandle方法来拦截该异常,从而实现对该异常的捕获和处理。
举个“栗”子!
我首先定义一个新的异常类,用于捕获业务场景中的各种业务问题:
在业务场景中,遇到不正确的操作,则抛出该异常:
该抛出的异常将被我们定义的全局异常处理器捕获并处理:
至此,便实现了SpringBoot的全局异常处理。
再说下题主所提的数据校验,通常我们操作数据的时候,不仅前端需要进行数据校验,后端也应当进行拦截和进行相应的错误提示。
我们可以使用SpringBoot里包含的hibernate-validator来进行。
由于spring-boot-starter-web里已经包括了hibernate-validator,所以我们不需要额外引入jar。
举个“栗”子!
在需要进行校验的实体类中,我们使用对应的注解来进行,常见的注解有许多,最常见的不可不说下“非空”判断,即@NotBlank注解:
然后在Controller层接收数据处,通过@Valid注解进行标记,便会对该接收实体进行校验:
在校验失败之后,我们可以定义一个全局异常处理器,来捕获数据校验的失败,从而返回统一的返回值处理。
两者一结合,便可以优雅的实现数据校验 全局异常捕获统一处理。
欢迎关注我的头条号【居家程序员】,时刻不停地思考着有趣的标题(而不是内容哈哈)
——没事待在家里不出门的 居家程序员。(我不想脱发!)
Java程序员如何完美回答面试官问的Mybatis初始化原理?
很多年不面试开发人员的技术了,但作为产品或项目负责人针对这个问题,一般期望听到的答案应该包括:
框架由哪些模块组成?每个模块的作用是什么?框架原理?有很多技术人员使用框架时,只简单用一些基础功能,当遇到新问题或者框架自身的问题时,不能从原理上去快速定位问题,无法着手解决。
跟其他支撑有何不同,优势在哪里?劣势在哪里?什么情况适用?比如对python的支持、比如处理复杂的SQL、适用的数据量等。
3.你在使用Mybatis的过程是否有发现框架自身的bug?如何解决的?任何程序都会存在一些bug,功能性、兼容性、安全性等等……要想证明你真的精通一个程序,就得对它的缺陷有所预测,并知道如何解决这个缺陷或避开这个缺陷。