Sprint Boot @Validated使用方法详解

  • Post category:Java

Spring Boot的@Validated的作用与使用方法

@Validated的作用

@Validated是Spring Boot框架中的一个注解,用于在控制器方法参数上添加校验规则。它可以对请求参数进行校验,确保参数的合法性。@Validated注解可以用于类和方法上。

@Validated的使用方法

1. 在类上使用@Validated

在类上使用@Validated注解,可以对该类中的所有控制器方法参数进行校验。例如:

@RestController
@RequestMapping("/users")
@Validated
public class UserController {
    @PostMapping
    public User createUser(@RequestBody @Valid User user) {
        // 创建用户
    }
}

在上述示例中,使用@RestController注解标记了一个控制器类,并使用@RequestMapping注解指定了请求路径。使用@Validated注解对该类中的所有控制器方法参数进行校验。使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。

2. 在方法上使用@Validated

在方法上使用@Validated注解,可以对指定方法的参数进行校验。例如:

@RestController
@RequestMapping("/users")
public class UserController {
    @PostMapping
    public User createUser(@RequestBody @Valid User user) {
        // 创建用户
    }

    @PatchMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
        // 更新用户信息
    }
}

在上述示例中,使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。使用@PatchMapping注解将HTTP PATCH请求映射到updateUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Validated注解对请求参数进行校验,并指定了校验分组。

@Validated的示例

下面是一个使用@Validated注解的示例:

@RestController
@RequestMapping("/users")
@Validated
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping
    public User createUser(@RequestBody @Valid User user) {
        return userService.createUser(user);
    }

    @PatchMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
        return userService.updateUser(id, user);
    }
}

在上述示例中,使用@Validated注解对该类中的所有控制器方法参数进行校验。使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。使用@PatchMapping注解将HTTP PATCH请求映射到updateUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Validated注解对请求参数进行校验,并指定了校验分组。

下面是另一个使用@Validated注解的示例:

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @PostMapping
    public User createUser(@RequestBody @Valid User user) {
        return userService.createUser(user);
    }

    @PatchMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
        return userService.updateUser(id, user);
    }
}

public class User {
    @NotNull
    private Long id;
    @NotBlank
    private String name;
    @Min(18)
    private Integer age;
    // 省略其他属性和方法
}

public interface UpdateGroup {}

public interface CreateGroup {}

在上述示例中,使用@Valid注解对User类中的属性进行校验。使用@Validated注解对updateUser方法中的请求参数进行校验,并指定了校验分组。定义了UpdateGroup和CreateGroup两个校验分组,用于对不同的请求参数进行不同的校验。

总结

@Validated是Spring Boot框架中的一个注解,用于在控制器方法参数上添加校验规则。它可以对请求参数进行校验,确保参数的合法性。@Validated注解可以用于类和方法上,可以根据需要选择使用。在实际开发中,我们可以根据需要定义校验规则和校验分组,以便对不同的请求参数进行不同的校验。