验证
默认情况下,如果类路径中包含Bean Validation(例如,Hibernate Validator),那么LocalValidatorFactoryBean会被注册为全局Validator,以便在控制器方法参数上使用@Valid和@Validated注解。
如以下示例所示,你可以自定义全局的Validator实例:
- Java
- Kotlin
- Xml
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
@Override
public Validator getValidator() {
Validator validator = new OptionalValidatorFactoryBean();
// ...
return validator;
}
}
@Configuration
class WebConfiguration : WebMvcConfigurer {
override fun getValidator(): Validator {
val validator = OptionalValidatorFactoryBean()
// ...
return validator
}
}
<mvc:annotation-driven validator="globalValidator"/>
请注意,您也可以在本地注册Validator实现,如下例所示:
- Java
- Kotlin
@Controller
public class MyController {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
@Controller
class MyController {
@InitBinder
fun initBinder(binder: WebDataBinder) {
binder.addValidators(FooValidator())
}
}
提示
如果你需要将LocalValidatorFactoryBean注入到某个地方,可以创建一个bean,并使用@Primary注解来避免与MVC配置中声明的bean发生冲突。