私の同僚は、Wordの「アプリケーションコンテキスト」を非常によく使用します。多くの記事で、このコロケーションも非常に頻繁に使用されました。
私の現在の理解:アプリケーションコンテキストは単一のxmlファイルです。
しかし、私が正しければ、人々は構成xmlファイルの代わりに「アプリケーションコンテキスト」を使用しないことを理解しています。
この問題に対処するのを手伝ってもらえますか?
@feakは、Springの観点から ApplicationContext
の意味について直接答えます。要するに、設定をロードするオブジェクトです(通常は 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...
}
}
Java Webアプリケーションの場合、DispatchServlet
はアプリケーションコンテキストをロードするため、springapp-アプリケーションのWEB-INFフォルダーにあるservlet.xmlファイル。
アプリケーションコンテキストは、単一の構成に関連付けられていることに注意してください(XMLベースかどうか)。限目。
これを理解した後、アプリケーションごとに複数のアプリケーションコンテキストを持つことができることも理解できます。これは、同じアプリケーションに複数のApplicationContext
sがあることです。コンソールアプリケーションの最後の例から、これは簡単に確認できます。
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つのアプリケーションコンテキストがあることに注意してください。あなたはこれができますか?はい、実際にここで見ています。では、違いは何ですか? mainの違いは、Spring Beanのシングルトンスコープはアプリケーションコンテキストごとにシングルトンであることです 、これは、Bar
からapplicationContext.xmlファイルで設定されたcontext
Beanを取得するとき、同じではないことを意味しますcontext2
から取得しますが、context
からいくつか取得すると、同じBar
Beanインスタンスが返されます。
これは良い習慣か悪い習慣ですか? どちらでもない、解決される問題に依存する(最後の例の場合、badプラクティス)。ほとんどの人は、すべてのBeanを単一の場所(XMLなど)で構成し、単一のアプリケーションコンテキストでロードすることをお勧めします。
あなたの同僚は、ロードされたSpringアプリケーションコンテキストを意味し、次へのアクセスを可能にしていると思います: