検証、データバインディング、型変換
バリデーションをビジネスロジックと捉えることには賛否両論があり、Spring はそのどちらも排除しないバリデーションとデータバインディングの設計を提供します。具体的には、検証は Web 層に結び付けられるべきではなく、ローカライズが容易であるべきであり、利用可能なバリデーターをプラグインできるべきです。これらの問題を考慮して、Spring は、アプリケーションのすべてのレイヤーで基本的かつ非常に使いやすい Validator
契約を提供します。
データバインディングは、ユーザー入力をアプリケーションのドメインモデル(またはユーザー入力の処理に使用するオブジェクト)に動的にバインドできます。Spring は、まさにそれを行うために適切な名前の DataBinder
を提供します。Validator
および DataBinder
は validation
パッケージを構成し、これは主に Web レイヤーで使用されますが、これに限定されません。
BeanWrapper
は Spring Framework の基本概念であり、多くの場所で使用されています。ただし、おそらく BeanWrapper
を直接使用する必要はありません。ただし、これはリファレンスドキュメントであるため、何らかの説明が適切であると思われます。この章では BeanWrapper
について説明します。これを使用する場合は、データをオブジェクトにバインドしようとするときに使用する可能性が最も高いためです。
Spring の DataBinder
と下位レベルの BeanWrapper
はどちらも PropertyEditorSupport
実装を使用して、プロパティ値を解析およびフォーマットします。PropertyEditor
および PropertyEditorSupport
型は JavaBeans 仕様の一部であり、この章でも説明されています。Spring の core.convert
パッケージは、一般的な型変換機能と、UI フィールド値をフォーマットするための高レベルの format
パッケージを提供します。これらのパッケージは、PropertyEditorSupport
実装のより単純な代替手段として使用できます。それらについても、この章で説明します。
Spring は、セットアップインフラストラクチャと Spring 独自の Validator
契約へのアダプターを通じて Java Bean 検証をサポートします。アプリケーションは、Java Bean 検証に従って、Bean 検証をグローバルに一度有効にして、すべての検証ニーズに対してのみ使用できます。Web レイヤーでは、DataBinder
の構成に従って、アプリケーションは DataBinder
ごとにコントローラーローカル Spring Validator
インスタンスをさらに登録できます。これは、カスタム検証ロジックのプラグインに役立ちます。