Springコンテナの初期化が完了したら、メソッドを実行します.

2446 ワード

Springコンテナの初期化が完了したら、メソッドを実行します.
 
  • ApplicationListener
  • を実現する.
  • 使用注記:`@PostConstruct`
  •   ApplicationListenerの実装
    Webプロジェクトの開発、特にエンタープライズクラスのアプリケーション開発を行う場合、エンジニアリングが開始されると多くの前置検査を行うことが多い.
    例えば、私たちのグループが使用禁止しているMysqlのグループを使用しているかどうかをチェックします.concat関数は,プロジェクトを使用すると起動できず,どのファイルのxmlファイルがこの関数を使用しているかを指摘する.
    Springのwebプロジェクトでは、Springの起動プロセスに介入することができます.SpringコンテナですべてのBeanを初期化した後、いくつかの操作を行いたいと思っています.このとき、インタフェースを実現することができます.
    1 2 3 4 5 6 7 package   com.yk.test.executor.processor public   class   InstantiationTracingBeanPostProcessor  implements   ApplicationListener { @Override public   void   onApplicationEvent(ContextRefreshedEvent event) { // , spring 。 } }
    Springのプロファイルに注入を追加します.
    1 2 class = "com.yk.test.executor.processor.InstantiationTracingBeanPostProcessor" />
     
    しかしこのとき、Webプロジェクト(spring mvc)では、rootアプリケーションcontextと、 たち のprojectName-servlet context(rootアプリケーションcontextのサブコンテナとして)の2つのコンテナが するという があります.
    この 、onApplicationEventメソッドが2 されます. の を するために、rootアプリケーションcontextの が した にのみ コードを び すことができ、 のコンテナの が した は、 の もせずに、 のコードを び すことができます.
    のようになります.
    1 2 3 4 5 6 @Override public   void   onApplicationEvent(ContextRefreshedEvent event) { if (event.getApplicationContext().getParent() ==  null ){ //root application context parent, . // , spring 。 } }
      
     
    :`@PostConstruct`
    はもっと な は :`@PostConstruct`を って、 が なときに する にこの を けるだけでいいです.
    の は のとおりです.
    package javax.annotation;
    
    import java.lang.annotation.*;
    import static java.lang.annotation.ElementType.*;
    import static java.lang.annotation.RetentionPolicy.*;
    
    @Documented
    @Retention (RUNTIME)
    @Target(METHOD)
    public @interface PostConstruct {
    
    }

     
    :http://www.cnblogs.com/rollenholt/p/3612440.html