2016-04-24 3 views
0

春のApplicationContextを閉じるには、2つの方法があります:Spring ApplicationContextを閉じる最も良い方法は何ですか?

解決方法1:

  ApplicationContext context = new ClassPathXmlApplicationContext(
       "spring/application-context.xml"); 
     // Application core ... 
     ((AbstractApplicationContext) context).close(); 

が解決策2:

  ApplicationContext context = new ClassPathXmlApplicationContext(
        "spring/application-context.xml"); 
     ((AbstractApplicationContext) context).registerShutdownHook(); 
     // Application core ... 

この2つのソリューションと何の違いは何がパフォーマンス面で最高ですか?

+0

なぜあなたはSpringブートを使用している場合に独自のコンテキストをロードしていますか?後者は、JVMが終了しているときにクリーンアップしようとするものを閉じません。 –

+0

申し訳ありません@ M.Deinum、私はSpring Bootを使用していません。 –

+1

ここにあなたのタグによると。 Webアプリケーションを使用している場合は、コンテキストを作成しないでください。また、コンテキストが1回作成される必要があります。ですから、あなたはスタンドアロンアプリケーションを構築しているか、またはスタンドアローンアプリケーションを構築しているので、これは本当に必要ですか? –

答えて

0

ソリューション1は、アプリケーションのコンテキストに

ソリューション2つのレジスタのコールバックをシャットダウンし、そのJVMがシャットダウンされている場合、スプリングはjavadocのから、シャットダウンします:

は、JVMでシャットダウンフックを登録しますその時点ですでに閉じられていない場合は、JVMシャットダウンでこのコンテキストを閉じます。

したがって、どちらも2つの違いがあります。通常、アプリケーションコンテキストを作成した直後にregisterShutdownHook()を呼び出します。したがって、ユーザーがJVMを終了すると、springが呼び出され、シャットダウンします。

アプリケーション終了時にclose()を呼び出して、豆がBeanを破棄できるようにする必要があります。

関連する問題