2016-10-04 9 views
0

私はApplicationListenerを試していますが、毎回ContextRefreshedEventが呼び出されます。 ContextStartedEventが呼び出されたときを知りたいContextStartedEventの代わりにContextRefreshedEventが呼び出されています

public class CustomListener implements ApplicationListener{ 

    @Override 
    public void onApplicationEvent(ApplicationEvent applicationEvent) { 
     if(applicationEvent instanceof ContextRefreshedEvent){ 
      System.out.println("<><><>refresh event......"); 
     }else if(applicationEvent instanceof ContextStartedEvent){ 
      System.out.println("<><><><>started event......"); 
     }else{ 
      System.out.println("......else........"); 
     } 
    } 

} 

答えて

0

ContextStartedEventは、明示的文脈にConfigurableAppicationContext.start()を呼び出したときに発行されている

ContextRefreshedEvent回以上公開することができるので、それはまた、すべてのBeanが初期化される前に公開することができる

start()は、ConfigurableApplicationContextによって拡張され、org.springframework.context.support.AbstractApplicationContextによって明示的に実装されるLifecycleインタフェースのメソッドです。主に非同期処理をサポートするために使用されます

は通常のコンクリートのApplicationContextの作成中に暗黙的に呼び出され、リフレッシュ、私たち(開発者)がそれにより使用されています。開始とリフレッシュの間グラム

区別があることです。

startは常に明示的です。ContextStartedEventを取得する場合は、ApplicationContextでstart()を呼び出す必要があります。

関連する問題