SpringBoot 中使用 @Valid 注解 + Exception 全局处理器优雅处理参数验证(小豆丁技术栈)

一、为什么使用 @Valid 来验证参数

在平常通过 Spring 框架写代码时候,会经常写接口类,相信大家对该类的写法非常熟悉。在写接口时经常要写效验请求参数逻辑,这时候我们会常用做法是写大量的 ifif else 类似这样的代码来做判断,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@RestController
public class TestController {

@PostMapping("/user")
public String addUserInfo(@RequestBody User user) {
if (user.getName() == null || "".equals(user.getName()) {
......
} else if(user.getSex() == null || "".equals(user.getSex())) {
......
} else if(user.getUsername() == null || "".equals(user.getUsername())) {
......
} else {
......
}
......
}

}

这样的代码如果按正常代码逻辑来说,是没有什么问题的,不过按优雅来说,简直糟糕透了。不仅不优雅,而且如果存在大量的验证逻辑,这会使代码看起来乱糟糟,大大降低代码可读性,那么有没有更好的方法能够简化这个过程呢?答案当然是有,推荐的是使用 @Valid 注解来帮助我们简化验证逻辑。

Read More

SpringBoot 全局异常处理详解(小豆丁技术栈)

一、本文简介

       在使用 Spring 框架开发程序时经常要写接口,尤其现在 SpringBoot 更推荐用 Restful 风格来写接口,在我们写接口中经常遇见的问题就是调用接口后,执行逻辑过程中报错,产生一堆异常信息栈。遇见这种问题是程序错误处理过程中没有考虑全面,漏掉某些错误没有进行异常处理。

       在正常的情况下,我们都会使用 try-catch 来处理异常从而避免发生一些未知的错误导致的不必要的损失,而在 Spring 框架中,它有没有针对异常处理有一些好的方法呢?这个问题回答当然是肯定的,Spring 框架提供了异常处理器来处理通过 Controller 接口访问应用产生的异常,只需要配置和添加一些注解就可以处理通过 Controller 接口抛出的全部的异常。

Read More

Java8中使用Lambda表达式简化代码(小豆丁技术栈)

一、Lambda 表达式简介

1、什么是 Lambda 表达式

       Lambda 表达式是在 JDK 8 中引入的一个新特性,可用于取代大部分的匿名内部类。使用 Lambda 表达式可以完成用少量的代码实现复杂的功能,极大的简化代码代码量和代码结构。同时,JDK 中也增加了大量的内置函数式接口供我们使用,使得在使用 Lambda 表达式时更加简单、高效。

Read More