2016-09-24 3 views
0

私はアドバイスと私がどのようにして呼び出すことができるかを知っています。バウンドaopを使用してターゲットメソッドに複数のアドバイスを実装し、共通のJavaオブジェクトに戻り値を格納する方法は?

入力を検証するためにspring aopを使用する予定です。入力はjava pojo のようなものです。

class Employee { 
    int id; 
    int age ; 
    String name ; 
    String designation; 
    String address; 
} 

1>私のサービスメソッドに渡された入力を検証する方法を知りたいと思います。

2>特定のビジネスルールを実行している、特定の検証(上記参照)を行っています。

3>私は異なるアドバイスで異なるルールを持っており、入力がすべてそれらをdbに格納すると、Employeeテーブル以外の賢明なストアすべてのエラーテーブル。

4>アドバイス/ルールは NotProperAgeRuleのように考えられます。年齢は18から60 NotProperAddressRuleの間でなければなりません:アドレス郵便番号は10001、10002 NotProperNameにする必要があります。名前は、特殊文字を含めることはできません。

5>ルールが失敗した場合は、別のテーブルにログを記録する必要があります。 ユーザーID 101 - > nameが適切ではなく、適切な年齢がありません。

6>これらのルールは、それぞれ独自のアドバイスクラスに入れる必要があります。

7>したがって、適切なチェーンで実行し、すべてのエラーを何らかの種類のリストに格納する必要があります。

私はMethodBeforeAdviceを使用しようとしましたが、すべてのアドバイスから単一リストのすべてのエラーを収集することはできません。

+0

あまりにも多くの可能な回答、または良い答えがどちらかありますが、この形式には長すぎるだろうしてください。回答セットを絞り込むか、いくつかの段落で回答できる問題を特定するための詳細を追加してください。 –

+0

Javaのリストにすべてのルールのエラーを統合し、AOPアドバイスのチェーンを作成するにはどのようなものになります。 MethodBeforeAdviceメソッドはvoidを返すためです。エラーを含むjavaリストを入力と共に次のアドバイスに渡すにはどうすればよいですか?あなたは1つまたは2つの例やヒントを与えることができますか? – stultus

+1

なぜjavax.validationを使用しないのですか? –

答えて

0

私はこのようなことをしました。我々は単一のアドバイスを持っていましたが、私たちはValidatorのコレクションをそれに注入しました。 各検証Beanは同じインタフェース検証を実施しました。 Validateには、入力pojoとエラーを記録するリストを取る単一のメソッドdoValidationがあります。 Springはそのようなバリデータをすべて見つけ、あなたのアドバイスクラスに注入します。すべての検証リストをループしてdoValidateを呼び出すだけです。すべてのエラーは同じリストに記録されます。

しかし、これは、あなたはまだ別のアドバイスをしたい場合は、あなたがメッセージを保持し、すべてのアドバイスクラスに注入するシングルトンBeanとしてそれを使用するために、独自のBeanを作成することができ、単一アドバイスクラスを持つことになります。また、すべてのアドバイスが同じコレクションに追加しようとするので、スレッド化する場合も注意してください。アドバイスの順序を指定するにはhttp://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/springframework/core/annotation/Order.html

関連する問題