需要
ここでは仮想ビジネスニーズ、我々は容易に理解するように。順序に従った処理の異なる種類の関数としたラインシステムがあると仮定する。
受注エンティティ:
サービス・インターフェース:
達成伝統
それ以外の場合は種類に応じて注文の束を書きます:
Strategyパターンの実装
戦略モードを使用して、あなただけのビジネスロジックを実装するための2つの行が必要です:
HandlerContextに上記プロセスは、このコンテキストプロセッサ、以下に説明する、特に、異なるビジネスを格納するために使用されるプロセッサであることがわかります。私たちは、ビジネスロジックを実装し、そのメソッドを呼び出して、抽象プロセッサAbstractHandlerを導き出します。
現在、当社の主要なビジネスロジックをプロセッサに実装されていることを理解することができますので、注文タイプの数が、それはプロセッサの数に対応しています。需要の変化、オーダーの種類を増加させた後、唯一の適切なプロセッサを完全に変更することなくOrderServiceV2Implことができる追加する必要があります。
のは、トラフィックプロセッサの文言を見てみましょう:
まず、各プロセッサは、ばねコンテナに追加する必要があり、したがって実現するため、最後のAbstractHandler継承され、オーダータイプに対応するプロセッサを識別するために使用されるカスタム注釈@HandlerTypeを追加する必要が続く@Componentメモを追加する必要があり、そのビジネスロジック。
カスタム注釈@HandlerType:
抽象プロセッサAbstractHandler:
カスタム注釈プロセッサは、非常にシンプルかつ抽象的で、どのように春、それまでのコンテナプロセッサを登録するには?
具体的なアイデアは、次のとおりです。
1、指定されたパッケージは@HandlerTypeクラスをマークしスキャン。
マップに格納されたカテゴリに対応する値として、キー、など2、注釈タイプ値。
図3に示すように、スプリングコンテナに登録されている上記地図コンストラクタパラメータ初期化HandlerContext、同様に、
我々は、コア機能はHandlerProcessorクラス、上記の機能を完成するにカプセル化されるであろう。
ハンドラプロセッサ:
ClassScaner:ソースコードのスキャンツール
HandlerProcessorは、Beanが容器にカスタマイズを登録し、BeanFactoryPostProcessor、治療豆の前に春を達成する必要があります。
コアが完成し、現在は対応するプロセッサを取得する方法HandlerContextを見てきました:
HandlerContext:
BeanTool:取得豆ツール
次いで、ばねは豆の種類に応じて登録クラスを取得するために、種類に応じて、対応するクラスを取得する#getInstance方法。
最後に、HandlerProcessorとBeanToolは、スキャン、または@Beanの方法によって明示的にプロジェクトの開始に役割を果たすために登録する必要があり、それを注意してください。
概要
利用戦略モードがあれば、他のコード、簡単なメンテナンス、およびカスタム注釈を使用して自己登録モードを複合体を簡素化し、簡単に変更の需要にも対応することができます。この記事では、たとえば、オーダーの種類として、静的または一定の列挙型は、私はあなたがより多くの、より良い方法を考えることができると信じて、柔軟であり、変更することができます多くの詳細がありますが、一般的なアイデアを提供します。