検証

デフォルトでは、Bean バリデーションがクラスパスに存在する場合(たとえば、Hibernate Validator)、LocalValidatorFactoryBean は、コントローラーメソッドの引数の @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 をどこかに挿入する必要がある場合は、MVC 構成で宣言されたものとの競合を避けるために、Bean を作成し、@Primary でマークします。