Springイベント駆動分析

2788 ワード

イベント
具体的な代表者は:Application Event:
1、JDKからEventObjectを継承し、JDKはすべてのイベントを受け継ぐことを要求し、そしてsourceを通じてイベントソースを獲得します.例えば、私達のAWTイベントシステムもそれから継承します.
2、システムのデフォルトは以下のApplication Eventイベントの実現を提供しています.
一つのApplication Contect Eventだけが、Application Comptextコンテナイベントを表しています.また、次のように実現されます.
Contect StartEdent:Appplication Comptext起動後にトリガするイベント.(現在のバージョンには何の役割もありません.)Contect StopedEvent:Appplication Conteet停止後にトリガされるイベント.(現在のバージョンには何の役割もありません.)Contect RefreshedEvent:Appplication Conteet初期化またはリフレッシュ完了後にトリガされるイベント.(容器初期化が完了したら呼び出す)Contect Close Event:Appplication Conteetクローズ後にトリガするイベント.(web容器が閉まると自動的にspring容器の閉鎖がトリガされます.通常のjavaアプリケーションであれば、ctx.register Shutdown Hook()を呼び出す必要があります.仮想マシンがオフになった時のフックを登録してください.)注:org.springframe ework.com.support.AbstractAplicationConteet抽象類はLifeCycleのstartとstopフィードバックを実現し、ContactStartEventとControxt Stop Eventイベントを発表します.しかし、実装されていないので、現在は何の役割もありません.
ターゲット(投稿者)
具体的な代表者は、Application Event PublisherおよびApplication Event Multicaterであり、システムのデフォルトは以下のように実現されています.
1、Appliation Contectインターフェースは、Appliation Event Publisherを引き継ぎ、AbstractAplication Controtextで具体的なコードを実現しました.実際の実行は、Appliation Event Multicaterに委託します.
public void publishEvent(){/省略部分コード}getAppliation Event Multicant().multication Event(event);if(this.parent!=null){this.parent.publishEvent;}私たちがよく使うApplication ComptextはAbstract Application Contectから引き継がれます.この機能は自動的に持ちます.
2、Appliation Controntは自動的に現地の容器に「」という名前のAppleication EventMulticaterを探して実現します.もし自分のnew一つのSimpleAppliation EventMulticasterがないなら、その中でSimpleication Event Multicantがイベントのコードを発表します.
public void multiticatEvent{for(final Appplication Event){for(final Aplication Listener listener:getAppplicationListeners(event){Exector=getTaskExector();if(extrtrator==nulblectratttttttttttttttttttttblectrexxxxxxxxtrablectrattttttttttttttttttblectrattttttttttttttttttttttttttttt)} else{listener.onAppliation Event(event)}これがexector(java.util.co ncurrent.Exector)であれば、非同期的にイベントのリリースをサポートすることができます.
したがって、私たちはイベントを送るには、Appplication Contact.publishEventを通じてだけでいいです.必要がない限り、自分の実現を作成する必要はありません.
モニター
具体的な代表者は、Application Listenerです.
1、JDKからのEventListenerを継承し、JDKはすべてのモニターにそれを継承するように要求します.例えば、AWTイベントシステムもそれから継承します.
2、Application Listenerインターフェース:
public interface Aplication Listener extens Event Listener{void onAppliation Event}これはonAppliation Event方法だけを提供しています.私たちはこの方法で内部判定イベントの種類を実現して処理する必要があります.順番にモニターをトリガする言語の意味もありません.
public interface Smartaplication Listener extens Appleication Listener、Ordered{/もしこのイベントのタイプをサポートすることができたらtrue book lean supportsEventTypeに戻ります.
    //      “  ”  ,    true  
boolean supportsSourceType(Class> sourceType);  
     
    //  ,         ,          
    int getOrder();  
このインターフェースは、サポートされているイベントタイプ、ターゲットタイプ、および実行順序を判断するのに便利である.