1. ホーム
  2. java

[解決済み] アプリケーションのコンテキストです。これは何ですか?

2022-03-04 04:36:29

質問事項

私の同僚は、アプリケーションコンテキストという言葉をよく使います。多くの記事でも、このコロケーションはよく使われています。

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

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

この問題に対処する方法を教えてください。

解決方法を教えてください。

の意味について、@feakが率直に答えてくれています。 ApplicationContext をSpringの観点から見てみましょう。要するに、設定を読み込むオブジェクトです(通常は XMLファイル アノテーションに基づく)そして、Springはビーンとその利益の管理を開始します。

  • パッケージで宣言されたビーン
  • アノテーションで宣言されたビーン
  • コンストラクタとメソッドの自動配線
  • 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 フォルダに作成します。

注意点 アプリケーションコンテキストは、1つのコンフィギュレーションに関連付けられます。 (XMLベースであろうとなかろうと)です。期間


これを理解した上で、1つのアプリケーションに対して複数のアプリケーションコンテキストを持つことができることも理解できたと思います。つまり、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のシングルトンスコープがシングルトンであることが異なる。 アプリケーションコンテキストごとに を取得する場合、この意味は Bar アプリケーションコンテキスト(applicationContext.xml)で設定された context は同じにはなりません。 から取得するのと同じように context2 からの検索は可能ですが context は同じ Bar ビーンインスタンスです。

これは良い習慣とされるのか、悪い習慣とされるのか? どちらでもない しかし、それは解決すべき問題によって異なります。 悪い の実践)。ほとんどの人は、すべてのBeanを1つの場所で構成し(XMLまたは別の方法で)、1つのアプリケーションコンテキストで読み込むことをお勧めします。