アプリケーションが終了したら、Springコンテキストを閉じたいと思います。
関連するコードにApplicationContext参照がありますが、closeメソッドが見つかりませんでした。
回答:
あなたのダウンキャストApplicationContextのConfigurableApplicationContextかを定義するclose()方法を:
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContextクラスでConfigurableApplicationContextあり、そのクラスによって実装されるインターフェイスであるため、ほとんどの場合、後者を使用することをお勧めします。
ConfigurableApplicationContextになりまし拡張Closableはるかに短いバージョンである(この変更がで行われたバージョンを知っているが、3.0.xのは、そうではない4.2.xではためのドキュメントがそれを示していません)((Closable)context).close();。
AutoCloseable、あなたが変数に自分のコンテキスト保存などのリソースを試し-で、今限り、使用することができることを意味実装、AutoCloseableつまりインターフェースが表示されている、try (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
以下に示すように、シャットダウンフックをJVMに登録する必要があります。
((AbstractApplicationContext)appCtx).registerShutdownHook();
詳細については、以下を参照してください。Springマニュアル:3.6.1.6Web以外のアプリケーションでSpringIoCコンテナーを正常にシャットダウンする
以下のようにコンテキストを初期化する場合
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
これらのようなクリーンなコンテキスト
((ClassPathXmlApplicationContext) context).close();
ApplicationContextオブジェクトを閉じる手順
ApplicationContextオブジェクトをConfigurableApplicationContextオブジェクトにキャスト」と入力します。例:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
((ConfigurableApplicationContext)context ).close();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext