0

Spring 2.5 で構築されたミッドエンタープライズレベルのビジネスアプリケーションの検証レイヤーを作成するための最良の戦略は何ですか?

Spring は Validator インターフェイスを実装し、validate メソッドに検証ロジックを記述できる機能を提供することを知っています。ただし、これは、Spring Controller を介して送信される Web リクエストのみに制限されます。

Web サービスの呼び出し中に利用できる検証フレームワークを開発したいと考えています。

つまり、Validator インターフェイスを実装する必要なく、フレームワークをそのままにして独立して呼び出すことができ、Spring MVC フローに自動的に統合することもできます。

あなたが私の主張を理解してくれることを願っています。

4

2 に答える 2

1

Spring Validation フレームワークは、Spring MVC の外部で使用できます。どの WebServices スタックを使用していますか? Spring-WS (Spring の Web サービス スタック) を使用している場合、バリデーターのセットアップ方法に関する特別な指示がここにあります。

http://static.springframework.org/spring-ws/sites/1.5/reference/html/server.html#d0e2313

他のスタックを使用している場合は、Spring の検証フレームワークを使用するスタックを実装する (またはスタックを見つける) 方がおそらく簡単です。

于 2008-09-11T19:37:21.793 に答える
0

Validator インターフェイスが 2 つのメソッドを定義していることを思い出してください。

boolean supports(Class clazz)
void validate(Object target, Errors errors)

これObject targetは、ユーザーに表示されるページを表すオブジェクト全体です。Errors インスタンスには、ユーザーに表示されるエラーが含まれます。

したがって、必要なことは、検証したいフォームの詳細で呼び出すことができる仲介者を定義することです。これは、Web サービスと同じです。仲介者は、次の 2 つの形式のいずれかを取ることができます。

  1. (おそらく最高):

    public interface ErrorReturning { 
        public void getErrors(Errors errors);
    }
    
  2. (これは、2 つ以上の状態が追加された場合、非常に速く醜くなる可能性があります):

    public interface ValidationObject {
        public Errors getErrors(Errors errors);
        public Object getResultOfWebServiceValidation();
    }
    

最初のアプローチを実装することをお勧めします。共通の検証では、Web サービスの検証に直接使用できるオブジェクトを渡しますが、getErrors()メソッドを実装できるようにします。このようにして、Spring のバリデーターで、検証メソッド内で次のように簡単に呼び出すことができます。

getCommonValidator().validate(partialObject).getErrors(errors);

getCommonValidator().validate(partialObject)Web サービスは、Web サービスで使用される直接オブジェクトの呼び出しに基づいています。

2 番目のアプローチはこのようなものですが、オブジェクト自体が使用可能な Web サービス検証オブジェクトであるのではなく、オブジェクトが Web サービス検証オブジェクトの特定のオブジェクトから返されることのみをインターフェイスが許可します。

于 2008-09-15T21:42:51.990 に答える