アプリケーションコンテキスト。これは何ですか? 質問する

アプリケーションコンテキスト。これは何ですか? 質問する

私の同僚は「アプリケーション コンテキスト」という言葉を頻繁に使用します。多くの記事でもこのコロケーションが頻繁に使用されています。

私の現在の理解: アプリケーション コンテキストは単一の XML ファイルです。

しかし、私が正しければ、人々は構成 XML ファイルの代わりに「アプリケーション コンテキスト」を使用しないだろうと理解しています。

この問題に対処するのを手伝ってもらえますか?

ベストアンサー1

@feakは、ApplicationContextSpring の観点から言えば、これは設定 (通常は XML ファイル アノテーション ベース) をロードするオブジェクトであり、その後 Spring は Bean とその利点の管理を開始します。

  • パッケージ内で宣言されたBean
  • アノテーションで宣言されたBean
  • コンストラクタとメソッドの自動配線
  • 豆注入
  • 構成、.properties、.yaml ファイルの読み込み

アプリケーション コンテキストを開始するには、次のいずれかを使用します。

  • アプリケーションの先頭でアプリケーション コンテキストを手動でロードします。これは、サンプル目的またはスタンドアロン アプリケーションで実行されます。

    public class Foo {
        public static void main(String[] args) {
            ApplicationContext context =
                new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
            //use the context as you wish...
        }
    }
    
  • Spring MVCを使用するJava Webアプリケーションの場合、DispatchServletアプリケーションコンテキストがロードされるので、springapp-servlet.xmlアプリケーションの WEB-INF フォルダー内のファイル。

ご了承くださいアプリケーションコンテキストは単一の構成に関連付けられます(XML ベースかどうか)。以上。


これを理解したら、アプリケーションごとに複数のアプリケーション コンテキストを持つことができることも理解できます。つまり、同じアプリケーションに 2 つ以上の を持つことができますApplicationContext。コンソール アプリケーションの最後の例から、これは簡単に確認できます。

public class Foo {
    public static void main(String[] args) {
        ApplicationContext context =
            new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
        ApplicationContext context2 =
            new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
        //use the context as you wish...
    }
}

同じXML設定を使用するアプリケーションコンテキストが2つあることに注意してください。これはできますか?はい、実際にここで確認できます。では違いは何でしょうか?主要違いは、Spring Beanのシングルトンスコープはシングルトンであることですアプリケーションコンテキストごとこれは、BarapplicationContext.xmlファイルで設定されたBeanをcontext 同じではないから取得するのと同じですcontext2が、 から複数回取得すると、context同じBarBean インスタンスが返されます。

これは良い習慣でしょうか、それとも悪い習慣でしょうか?どちらでもない解決すべき問題によって異なります(最後の例の場合、悪い実践です。ほとんどの人は、すべての Bean を 1 か所で (XML などを使用して) 構成し、単一のアプリケーション コンテキストでロードすることをお勧めします。

おすすめ記事