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()メソッドにイベント処理コードを追加します.
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