sharp-common集成验证Service验证

对Service中的方法的参数进行校验,该如何做呢?

Spring validator 方法级别的校验

只需要加入类注解 @Validated

@Service
@Validated
public class UserService {

    public void save(@Valid User user,
                     @Min(value = 22, message = "不能小于22岁") Integer age) {
        System.out.println("userService save...");
    }

    public void save2(@NotBlank String title) {
        System.out.println("userService save3...");
    }
}

spring 在此基础上进行了扩展,添加了 MethodValidationPostProcessor 拦截器,可以实现对方法参数的校验。

sharp-common集成验证Service验证

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@Configuration
@RequiredArgsConstructor
@Import({ServiceMethodValidationInterceptor.class})
public class AppConfig {
    private final Validator validator;
    @Bean
    public ValidatorHelper validatorHelper() {
        return new ValidatorHelper(validator);
    }
}
@Service
public class UserService {

    @Validated
    public void save(@Valid User user,
                     @Min(value = 22, message = "不能小于22岁") Integer age) {
        System.out.println("userService save...");
    }

    @Validated
    public void save2(@NotBlank String title) {
        System.out.println("userService save3...");
    }
}

扫描service目录下,类名是Service结尾的类。只要在方法上加注解 @Validated

参考链接: