验证
默认情况下,如果类路径上存在 Bean 验证
(例如 Hibernate Validator),则 LocalValidatorFactoryBean
被注册为全局 Validator,
用于与控制器方法参数上的 @Valid
和 @Validated
一起使用。
您可以像以下示例所示自定义全局 Validator
实例:
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public Validator getValidator() {
Validator validator = new OptionalValidatorFactoryBean();
// ...
return validator;
}
}
请注意,您也可以像以下示例所示本地注册 Validator
实现:
public class FooValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return false;
}
@Override
public void validate(Object target, Errors errors) {
}
}
@Controller
public class MyController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
如果您需要在某个地方注入 LocalValidatorFactoryBean ,请创建一个 Bean 并用 @Primary 标记它,以避免与 MVC 配置中声明的 Bean 发生冲突。
|