Spring-MVC: 「コンテキスト」と「名前空間」とは何ですか? 質問する

Spring-MVC: 「コンテキスト」と「名前空間」とは何ですか? 質問する

からXMLWebアプリケーションコンテキストjavadoc:

デフォルトでは、ルート コンテキストの場合は "/WEB-INF/applicationContext.xml" から、名前空間 "test-servlet" を持つコンテキストの場合は "/WEB-INF/test-servlet.xml" から構成が取得されます (サーブレット名が "test" の DispatcherServlet インスタンスの場合など)。

Spring コンテキストとはどういう意味ですか?

ルート コンテキストとは何ですか? 他にどのような種類の Spring コンテキストがありますか?

名前空間とは何ですか?

アップデート:

いくつかのフォローアップの質問:

  1. Spring ApplicationContext とは何ですか? 構成 XML ファイルで定義されている Bean を保持する「もの」ですか?

  2. ContextLoaderListener のコードを見ると、構成 XML ファイルで定義されたデータをロードしているように見えます。しかし、私の Spring Web アプリはこのリスナーや他のリスナーを定義しなくても動作します。どうしてそうなるのでしょうか?

  3. どのようなシナリオで、Spring の DispatcherServlet のインスタンスを複数持つことが理にかなっているでしょうか?

  4. ルート コンテキスト (applicationContext.xml のデータ) は DispatcherServlet のすべてのインスタンスに適用可能で、他のコンテキスト (test-servlet.xml のデータなど) は関連する DispatcherServlet (つまり、test) にのみ適用可能でしょうか?

ベストアンサー1

「春のコンテキスト」 = aSpring アプリケーションコンテキスト

ウェブアプリケーションにおける「ルートコンテキスト」とは、ウェブアプリケーションによって読み込まれ使用されるメインコンテキストを意味します。通常、ルートコンテキストはコンテキストローダーリスナー

ルート コンテキストは、実際にはコンテキストの「種類」ではありません。コンテキストが果たす役割にすぎません。Web アプリケーションには 1 つのルート コンテキストがあります。他のコンテキストはルート コンテキストではありません。通常、それらはルート コンテキストの子です。

ここでの名前空間は、Spring の DispatcherServlet のインスタンスのスコープを指します。ここで言っているのは、web.xml でサーブレットに「test」という名前を付けると、慣例により、Spring はディスパッチャのコンテキストとして使用するために「test-servlet.xml」という名前のファイルを探すということです。ちなみに、ディスパッチャ用に作成されたこのような各コンテキストは、ルート コンテキストの子になります。

編集:新しい質問に答えるには:

  1. ApplicationContext について学ぶには、私の回答の最初の行にあるリンクに従ってください。そこに回答されていない質問がある場合は、新しい SO の質問を投稿することをお勧めします。
  2. ルート コンテキストはオプションです。ContextLoaderListener が定義されていない場合は、ルート コンテキストがありません。DispatcherServlet を使用すると、独自の ApplicationContext が開始され、そこから必要な Bean が取得されます。
  3. すぐに思いつく方法はありません。アプリ内の一部の URL リソース間で大幅に異なる構成が必要な場合、そうすることになるかもしれません。
  4. はい。正確に言えば、ルート コンテキストは、DispatcherServlet 用に開始されたコンテキストの親コンテキストです。親コンテキスト内の Bean は子コンテキストを介してアクセスできますが、その逆は当てはまりません。

おすすめ記事