对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
参考链接: