SpringでApplication Contectのイベントメカニズム(二内定事件)
2883 ワード
Springでは5つの基準イベントが定義されていますが、それぞれ以下のように紹介されています.
1)Contect RefreshedEvent:Application Conteetが初期化または更新された時にこのイベントをトリガします.
2)Contect CloEvent:Appplication Comptextがオフされたときにトリガされるイベント.容器が閉鎖された場合、その管理のすべてのシングルビームは破壊されます.
3)Request HandleEvent:Webアプリケーションでは、http要求が終了すると、このイベントがトリガされる.
ConttestStartEvent:Spring 2.5新規イベントは、容器がConfigrable Apple plicationControtextのStart()メソッドの開始/再開容器を呼び出すと、このイベントをトリガします.
5)Contect StoppedEvent:Spring 2.5に追加されたイベントは、容器がConfigrable Appplication ControtextのStop()メソッドが容器を停止するときにトリガされます.
次にSpring内定のイベントを一例でどう処理するかを示します.Javaプロジェクトを作成し、Spring開発能力を追加して、ioc.testパッケージを新規作成します.パッケージにAppliation Event Listener類を新規作成し、Appliation Listenerインターフェースを実現し、onAppplication Event()メソッドにイベント処理コードを追加します.
http://www.blogjava.net/cmzy/archive/2008/07/25/217217.html
1)Contect RefreshedEvent:Application Conteetが初期化または更新された時にこのイベントをトリガします.
2)Contect CloEvent:Appplication Comptextがオフされたときにトリガされるイベント.容器が閉鎖された場合、その管理のすべてのシングルビームは破壊されます.
3)Request HandleEvent:Webアプリケーションでは、http要求が終了すると、このイベントがトリガされる.
ConttestStartEvent:Spring 2.5新規イベントは、容器がConfigrable Apple plicationControtextのStart()メソッドの開始/再開容器を呼び出すと、このイベントをトリガします.
5)Contect StoppedEvent:Spring 2.5に追加されたイベントは、容器がConfigrable Appplication ControtextのStop()メソッドが容器を停止するときにトリガされます.
次にSpring内定のイベントを一例でどう処理するかを示します.Javaプロジェクトを作成し、Spring開発能力を追加して、ioc.testパッケージを新規作成します.パッケージにAppliation Event Listener類を新規作成し、Appliation Listenerインターフェースを実現し、onAppplication Event()メソッドにイベント処理コードを追加します.
package ioc.test;
2
3 //Import
4 public class ApplicationEventListener implements ApplicationListener {
5
6 public void onApplicationEvent(ApplicationEvent event) {
7
8 //
9 if(event instanceof ContextClosedEvent ){
10 System.out.println(event.getClass().getSimpleName()+" !");
11 }else if(event instanceof ContextRefreshedEvent ){//
12 System.out.println(event.getClass().getSimpleName()+" !");
13 }else if(event instanceof ContextStartedEvent ){
14 System.out.println(event.getClass().getSimpleName()+" !");
15 }else if(event instanceof ContextStoppedEvent){
16 System.out.println(event.getClass().getSimpleName()+" !");
17 }else{
18 System.out.println(" :"+event.getClass().getName());
19 }
20
21 }
22
23 }
Springプロファイルでビーンを定義します.クラスはAppliation EventListenerです.コードは以下の通りです.<?xml version="1.0" encoding="UTF-8"?>
<beans …………
<bean id="ApplicationEventListener" class="ioc.test.ApplicationEventListener" />
</beans>
メインメソッドを含むTesMain類を追加し、メインメソッドで容器を呼び出す方法によりSpring内定イベントをトリガします.コードは以下の通りです. package ioc.test;
//import
public class TesMain {
public static void main(String[] args) {
AbstractApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// ac.refresh();// ContextRefreshedEvent
ac.start(); // ContextStartedEvent
ac.stop(); // ContextStoppedEvent
ac.close(); // , ContextClosedEvent
}
}
【転載先】http://www.blogjava.net/cmzy/archive/2008/07/25/217217.html