springboot 提供公共方法校验传入参数
时间: 2023-07-12 07:03:43 浏览: 48
Spring Boot 提供了多种校验传入参数的方法,以下是其中的几种:
1. 使用 JSR 303 标准的注解进行校验。例如,使用 @NotNull、@Min、@Max、@Size 等注解对参数进行校验。同时,在 Controller 类中可以使用 @Validated 注解,指定进行校验的参数。
2. 自定义校验注解。可以通过编写自定义注解、自定义校验器等方式来实现校验。自定义注解需要标注 @Constraint 注解,并指定校验器类。
3. 使用 Spring 提供的校验器 API 进行校验。例如,使用 Validator 接口进行校验,可以手动调用校验器的 validate 方法对参数进行校验。
需要注意的是,以上方法都需要在 Controller 层进行校验,以保证传入参数符合业务需求。
相关问题
springboot 提供公共方法校验传入参数 if(StringUtils.isEmpty(daCustomer.getCustomerName())) { rest.setCode(-1); rest.setMessage("用户姓名不能为空"); } if(StringUtils.isEmpty(daCustomer.getCustomerAddress())) { rest.setCode(-1); rest.setMessage("用户地址不能为空"); }
这段代码使用了 StringUtils 工具类的 isEmpty 方法对传入的参数进行了非空校验,并在校验不通过时返回错误码和错误信息。虽然这种方式可以校验参数是否为空,但是对于更加复杂的校验场景,这种方式可能会显得比较繁琐。因此,建议使用 Spring Boot 提供的校验注解或自定义校验注解等方式进行参数校验,并在 Controller 层进行统一的异常处理,提高代码的可读性和可维护性。
springboot自定义请求参数校验
在 Spring Boot 中,可以使用 Hibernate Validator 来进行请求参数校验。具体步骤如下:
1. 引入 Hibernate Validator 依赖:
```xml
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
```
2. 在需要校验的请求参数实体类中添加校验注解,例如:
```java
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotBlank(message = "密码不能为空")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
// 省略 getter 和 setter 方法
}
```
3. 在请求处理方法中添加 @Validated 注解,并在参数上添加 @Valid 注解,例如:
```java
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@PostMapping("/login")
public Result login(@RequestBody @Valid User user) {
// 处理登录逻辑
}
}
```
4. 当请求参数不符合校验规则时,会抛出 ConstraintViolationException 异常。可以在全局异常处理器中对该异常进行处理,例如:
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ConstraintViolationException.class)
public Result handleConstraintViolationException(ConstraintViolationException e) {
List<String> errorMessages = e.getConstraintViolations().stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.toList());
return Result.error(String.join(",", errorMessages));
}
}
```
这样就可以自定义请求参数校验了。