@validated 注解 使用 示例
时间: 2023-09-27 20:07:09 浏览: 111
当使用 Spring 框架中的 @Validated 注解时,可以通过分组(groups)来对验证进行分类和组织。这种分组功能允许您根据不同的验证场景来选择性地进行验证。
以下是一个示例,演示了如何在Spring中使用 @Validated 注解和分组:
```java
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.groups.Default;
// 定义分组接口
public interface Group1 { }
public interface Group2 { }
// 定义验证类
@Validated
public class UserValidator {
public void validateGroup1(@NotNull(groups = Group1.class) Integer id,
@NotBlank(groups = Group1.class) String name) {
// 针对 Group1 进行的验证逻辑
}
public void validateGroup2(@NotBlank(groups = Group2.class) String email,
@NotBlank(groups = Group2.class) String password) {
// 针对 Group2 进行的验证逻辑
}
public void validateDefaultGroup(@NotBlank String username) {
// 针对 Default 分组进行的验证逻辑
}
}
```
在上述示例中,我们定义了两个分组接口:Group1 和 Group2。然后,在 UserValidator 类中,我们使用 `@NotNull(groups = Group1.class)` 和 `@NotBlank(groups = Group1.class)` 注解来指定在 Group1 分组中需要验证的字段。同样地,我们使用 `@NotBlank(groups = Group2.class)` 注解来指定在 Group2 分组中需要验证的字段。
接着,我们可以在业务逻辑中根据需要调用不同的验证方法,例如:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service
@Validated
public class UserService {
private final UserValidator userValidator;
@Autowired
public UserService(UserValidator userValidator) {
this.userValidator = userValidator;
}
public void createUser(@NotNull(groups = Group1.class) Integer id,
@NotBlank(groups = Group1.class) String name) {
userValidator.validateGroup1(id, name);
// 创建用户的逻辑
}
public void resetPassword(@NotBlank(groups = Group2.class) String email,
@NotBlank(groups = Group2.class) String password) {
userValidator.validateGroup2(email, password);
// 重置密码的逻辑
}
}
```
在上述示例中,UserService 类使用了 @Validated 注解,用于表示该类中的方法参数需要进行验证。通过使用 `@NotNull(groups = Group1.class)` 和 `@NotBlank(groups = Group1.class)` 注解指定了在 Group1 分组中需要验证的字段。同样地,在 resetPassword 方法中,我们使用 `@NotBlank(groups = Group2.class)` 注解来指定在 Group2 分组中需要验证的字段。
这样,当调用 UserService 类中的方法时,Spring 框架会根据不同的分组进行相应的验证。
需要注意的是,默认情况下,Spring 使用 Default 分组(即没有指定任何分组)进行验证。如果没有显式地指定分组,那么使用默认分组进行验证。
希望这个示例能够帮助您理解在Spring中如何使用 @Validated 注解和分组进行验证。
阅读全文