0.8、Springソース学習——Springでのイベントの公開と処理
文書ディレクトリ前言 Springにおけるオブザーバーパターン Springイベント関連クラス/インタフェース紹介 マルチイベントプロセッサ Springで重要ないくつかの重要なイベントクラス イベントリスナークラス カスタムイベントパブリケーションとリスニング カスタムリスナー カスタムイベント カスタムイベントのパブリケーション(効果表示 )延長-ApplicationListenerとサーブレットContextListener 参照リンク 前言
SpringアプリケーションContext refresh()メソッドの論理の最後に、登録イベントパブリッシャと登録リスナーの操作があり、refresh()が終了すると、イベントが発行される.Springは、あるイベントが発生すると、他の注目者のイベントを引き起こすことを可能にする.
Springでのオブザーバーモード
refresh()メソッドは、マルチイベントプロセッサの登録、イベントリスナーの登録を完了する.これはSpringの設計モードにおける観察者モードに対する実践である.イベントの発行後、マルチイベントプロセッサは、登録されたすべてのイベントリスナーにイベントを通知する責任を負う.
Springイベント関連クラス/インタフェースの紹介
マルチイベントプロセッサ
イベントパブリッシュのコードロジック内部ではマルチイベントプロセッサが取得され、イベントプロセッサはすべてのSpringリスナーオブジェクトを取得し、次にリスナーオブジェクトを順次呼び出す方法デフォルトのマルチイベントプロセッサはrefresh()メソッドでアプリケーションContextオブジェクトを初期化するプロセスで作成されます.具体的なクラスは
Springで重要ないくつかの重要なイベントクラス
SpringのアプリケーションContextのイベントには、次のいくつかのContextClosed Event ContextRefreshedEvent refresh()メソッドでContextStartedEvent ContextStopppedEventを呼び出します.
イベントリスナークラス
インタフェースApplicationListener上書きを実現する必要があるonApplicationEventメソッドrefresh()メソッドに実装されたjavaをすべてインスタンス化して登録する.util.EventListener. ApplicationListenerのbean
カスタムイベントのパブリケーションとリスニング
Springでは、イベント、リスナーをカスタマイズし、イベントのパブリッシュを行うことができます.以下に例を示します.
カスタムリスナー
カスタムListenerは、インタフェースApplicationListenerを実装する必要があります.
カスタムイベント
ApplicationEventクラスの実装が必要
カスタムイベントのパブリケーション(効果表示)
ツールバーの xmlファイル内容 試験結果
延長-ApplicationListenerとServiceletContextListener
両者ともリスナーに関するインタフェースであり、異なる点は.ApplicationListenerはSpringイベントのListenerクラスが実現するインタフェースに属する.サーブレットContextListenerは、サーブレットイベントのListenerクラスが実現するインタフェースに属する.具体的な応用から言えば、サーブレットContextListenerの呼び出しはservletプロジェクトにあり、例えばservletプロジェクトの起動段階の初期化に用いられる.https://blog.csdn.net/bestcxx/article/details/99402140ApplicationListenerはSpringシーンでのみ使用できる.
リファレンスリンク
[1]、https://blog.csdn.net/yu_kang/article/details/88389700#EventListener_318 [2]、https://blog.csdn.net/yu_kang/article/details/88727188 [3]、https://blog.csdn.net/tonysong111073/article/details/88385078
SpringアプリケーションContext refresh()メソッドの論理の最後に、登録イベントパブリッシャと登録リスナーの操作があり、refresh()が終了すると、イベントが発行される.Springは、あるイベントが発生すると、他の注目者のイベントを引き起こすことを可能にする.
Springでのオブザーバーモード
refresh()メソッドは、マルチイベントプロセッサの登録、イベントリスナーの登録を完了する.これはSpringの設計モードにおける観察者モードに対する実践である.イベントの発行後、マルチイベントプロセッサは、登録されたすべてのイベントリスナーにイベントを通知する責任を負う.
Springイベント関連クラス/インタフェースの紹介
マルチイベントプロセッサ
イベントパブリッシュのコードロジック内部ではマルチイベントプロセッサが取得され、イベントプロセッサはすべてのSpringリスナーオブジェクトを取得し、次にリスナーオブジェクトを順次呼び出す方法デフォルトのマルチイベントプロセッサはrefresh()メソッドでアプリケーションContextオブジェクトを初期化するプロセスで作成されます.具体的なクラスは
org.springframework.context.event.SimpleApplicationEventMulticaster
Springで重要ないくつかの重要なイベントクラス
SpringのアプリケーションContextのイベントには、次のいくつかのContextClosed Event ContextRefreshedEvent refresh()メソッドでContextStartedEvent ContextStopppedEventを呼び出します.
イベントリスナークラス
インタフェースApplicationListener上書きを実現する必要があるonApplicationEventメソッドrefresh()メソッドに実装されたjavaをすべてインスタンス化して登録する.util.EventListener. ApplicationListenerのbean
カスタムイベントのパブリケーションとリスニング
Springでは、イベント、リスナーをカスタマイズし、イベントのパブリッシュを行うことができます.以下に例を示します.
カスタムリスナー
カスタムListenerは、インタフェースApplicationListenerを実装する必要があります.
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
@Component
public class MyListener implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent event) {
System.out.println(" :"+event.getClass());
if(event instanceof ContextRefreshedEvent) {
System.out.println(" : applicationContext ");
}
}
}
カスタムイベント
ApplicationEventクラスの実装が必要
import org.springframework.context.ApplicationEvent;
/**
*
* */
public class MyEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
public MyEvent(Object source) {
super(source);
}
}
カスタムイベントのパブリケーション(効果表示)
ツールバーの
public static void main(String[] args) {
// , applicationContext
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("classpath:applicationContext2.xml");
// applicationContext
applicationContext.publishEvent(new MyEvent(applicationContext));
}
<bean class="com.bestcxx.test.MyListener">bean>
:class org.springframework.context.event.ContextRefreshedEvent
:class com.bestcxx.test.MyEvent
延長-ApplicationListenerとServiceletContextListener
両者ともリスナーに関するインタフェースであり、異なる点は.ApplicationListenerはSpringイベントのListenerクラスが実現するインタフェースに属する.サーブレットContextListenerは、サーブレットイベントのListenerクラスが実現するインタフェースに属する.具体的な応用から言えば、サーブレットContextListenerの呼び出しはservletプロジェクトにあり、例えばservletプロジェクトの起動段階の初期化に用いられる.https://blog.csdn.net/bestcxx/article/details/99402140ApplicationListenerはSpringシーンでのみ使用できる.
リファレンスリンク
[1]、https://blog.csdn.net/yu_kang/article/details/88389700#EventListener_318 [2]、https://blog.csdn.net/yu_kang/article/details/88727188 [3]、https://blog.csdn.net/tonysong111073/article/details/88385078