@Validated注解使用场景

当使用 @Validated 注解时,一般是用于在 Spring MVC 的控制器方法中对请求参数进行验证。以下是一个简单的代码示例场景:

首先,我们创建一个验证组 UpdateValid,用于定义更新操作的验证规则。

public interface UpdateValid {
    // 空接口,用于作为验证标记
}
public interface InsertValid {
    // 空接口,用于作为验证标记
}

然后,我们创建一个控制器类,其中包含一个更新用户信息的方法。

@RestController
public class UserController {

    @PostMapping("/users/{id}")
    public ResponseEntity<String> updateUser(
            @PathVariable("id") Long id,
            @RequestBody @Validated({UpdateValid.class}) UserDto userDto),
            @RequestBody @Validated({InsertValid.class}) UserDto userDto)  {
        // 更新用户信息的逻辑
        // ...
        return ResponseEntity.ok("User updated successfully!");
    }
}

在上述代码中,我们使用了 @Validated({UpdateValid.class}) 注解来对 UserDto 类型的请求参数进行验证。这表示在执行 updateUser 方法之前,会先对 userDto 参数进行验证。

假设我们的 UserDto 类如下所示:

public class UserDto {
    
    @NotBlank(message = "用户名不能为空", groups = {UpdateValid.class})
    private String username;
    
    @Email(message = "邮箱格式不正确", groups = {InsertValid.class})
    private String email;

    // 省略其他字段和方法
}

在上述示例中,我们使用了 @NotBlank 和 @Email 注解来对 username 和 email 字段进行非空和邮箱格式的验证。,并通过 groups 参数指定了该验证规则属于 UpdateValid 验证组。这样,在执行更新操作时,只会对 username 字段进行非空验证。

通过定义验证组,并在需要的地方进行指定,我们可以更加灵活地控制参数的验证规则,以适应不同的业务场景和需求。

当客户端发送一个 POST 请求到 /users/{id} 接口,并传递一个符合 UserDto 类型的 JSON 数据时,Spring MVC 框架会自动对 UserDto 参数进行验证。如果验证不通过,将返回相应的错误信息;如果验证通过,将执行 updateUser 方法。

通过使用 @Validated 注解和验证组,我们可以在控制器方法中方便地实现参数级别的验证,并确保请求数据的有效性。

猜你喜欢

转载自blog.csdn.net/weixin_44060488/article/details/134992183
今日推荐