検証、データバインディング、型変換

バリデーションをビジネスロジックと捉えることには賛否両論があり、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 インスタンスをさらに登録できます。これは、カスタム検証ロジックのプラグインに役立ちます。