私の同僚は、「アプリケーション コンテキスト」という言葉をよく使います。多くの記事で、このコロケーションも非常に頻繁に使用されています。
私の現在の理解: アプリケーション コンテキストは単一の xml ファイルです。
しかし、私が正しければ、人々は構成 xml ファイルの代わりに「アプリケーション コンテキスト」を使用しないことを理解しています。
この問題に対処するのを手伝ってもらえますか?
私の同僚は、「アプリケーション コンテキスト」という言葉をよく使います。多くの記事で、このコロケーションも非常に頻繁に使用されています。
私の現在の理解: アプリケーション コンテキストは単一の xml ファイルです。
しかし、私が正しければ、人々は構成 xml ファイルの代わりに「アプリケーション コンテキスト」を使用しないことを理解しています。
この問題に対処するのを手伝ってもらえますか?
@feak は、ApplicationContext
Spring に関する の意味について率直な回答を提供します。つまり、構成 (通常は XML ファイルアノテーション ベース) をロードするオブジェクトであり、Spring は Bean とその利点の管理を開始します。
アプリケーション コンテキストを開始するには、次のいずれかを使用できます。
アプリケーションの開始時にアプリケーション コンテキストを手動でロードします。これは、サンプル目的またはスタンドアロン アプリケーションで行われます。
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
、アプリケーション コンテキストがロードされるため、アプリケーションのWEB-INF フォルダーにspringapp-servlet.xmlファイルを作成するだけで済みます。
アプリケーション コンテキストは、単一の構成(XML ベースかどうかに関係なく) に関連付けられていることに注意してください。限目。
これを理解すると、アプリケーションごとに複数のアプリケーション コンテキストを持つことができることも理解できます。ApplicationContext
これは、同じアプリケーションに2 つ以上の があることです。コンソール アプリケーションの最後の例から、これは簡単に確認できます。
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 ファイルで構成されている Bean を から取得する場合と から取得する場合context
は同じではありませんが、context2
から複数回取得すると同じBean インスタンスcontext
が返されることを意味します。Bar
これは良い習慣ですか、それとも悪い習慣ですか?どちらも、解決する問題によって異なります(最後の例の場合、それは悪い習慣だと思います)。ほとんどの人は、すべての Bean を 1 か所で (XML または別の方法で) 構成し、1 つのアプリケーション コンテキストでロードすることをお勧めします。