JSR-303 (Bean Validation) では、作成する制約バリデーターごとに特別なアノテーションを定義する必要があります。@Max
これは、再利用可能な制約バリデータ (標準の@NotNull
、 など)を作成している場合に完全に理にかなっています。
ただし、実際には、検証済みのすべての Bean には、より複雑なビジネス検証を行うための独自のバリデーターが必要です。通常の JSR-303 実装では、バリデーターごとに個別のアノテーションを作成する必要があります。これにより、開発者は 1 回限りのアノテーションを作成することを余儀なくされ、Bean 検証の全体的な概念がばかげているように見えます。JSR-303 がある種の委任制約アノテーションを提供する場合、1 回限りのアノテーションの必要性を回避できます@ValidateBy(validator=my.custom.Validator)
。
今私の質問に:
- JSR-303 にそのようなユースケースが含まれていないのはなぜですか?
- これに関連する公式の議論はありますか (私は何も見つけることができませんでした)?
- そのような機能を提供する JSR-303 ライブラリはありますか (それを実装するのが難しいというわけではありません)?
更新 1 - 特定のユースケース (この質問につながった)
非常に豊富なビジネス モデル (40 の管理可能なエンティティ、20 の埋め込み可能なエンティティ、25 の読み取り専用エンティティ) を備えた中程度のエンタープライズ アプリケーションがあります。これは、多数の HTML フォームがあることを意味します。各フォームは、JSR-303 アノテーション付きの指定されたフォーム Bean (70 フォーム Bean) によって支えられています。一部のフォームでは、自明ではない独自の検証が必要です (たとえば、配信タイプが電子メールの場合、連絡先電子メールを設定する必要があります...)。JSR-303 では、33 個の (不要な 1 回限りの) アノテーションを持つ 33 個のフォーム Bean 固有のバリデーターがあります。
Java クラス (エンティティ、コントローラー、DAO、DTO、マッパー、バリデーターなど... 現在、これで 800 個の.java
ファイルが作成されます) の数があるため、ボイラープレート コードを使用するのは好きではありません。