私は春に新しく、簡単なWebアプリケーションを作成しています。私はSpring MVCのコンテキストについて読んでいます。Spring MVCでのコンテキストの理解
私はEclipse用のSTSプラグインを使用しています。プラグインを使用して Spring MVCプロジェクトを作成しました。
ここでは、プロジェクトにweb.xml、root-context.xml、servlet-context.xmlの3つのXML文書があります。これらは私のためにSTSによって作成されました。
web.xmlで、ディスパッチャサーブレットは、サーブレットのcontext.xmlの方に指摘されており、私は、ディスパッチャサーブレットジョブがビューを解決する方法を知っているとするコントローラ豆のための場所であるWebアプリケーションコンテキストを作成することであることを理解します存在する。 私の理解は正しいですか?もしそうなら、この文脈によって他のどのような仕事が達成されるでしょうか?
ここでは、プロジェクトのデフォルトパッケージにコンポーネントスキャンを含むroot-context.xmlというファイルがあります。私の理解では、このコンテキストは、多くのサーブレットが使用できるグローバルBeanを持つ必要があります。私の理解は正しいのですか?これ以外に何がありますか?このファイルを使用してどのようなコンテキストが作成されますか?
私はさらにプロジェクトに沿っており、contextLoaderListner(web.xml)を使用してロードされるいくつかの* -context.xmlファイル(dao-context.xml、security-context.xmlなど)を持っています。これは良いアイデアですか?あるいは、すべてがservlet-context.xmlに入るはずですか?私はそれが懸念の分離を提供するので、異なる文脈を持つことは良い考えだと思います。コメント?また、これらの* -context.xmlファイルからはどのようなコンテキストが作成されますか?これらのファイルの適切なフォルダの場所は何ですか?
Web.xmlはtomcatなどのサーブレットコンテナ用で、プロジェクト内の他のすべてのxmlファイルはスプリングコンテナ用です。あれは正しいですか?これらのファイルはすべて分離されており、分離の心配はありませんか?
現在のシナリオでは、いくつのアプリケーションコンテキストとWebアプリケーションコンテキストが存在しますか?
なぜ複数のディスパッチャーサーブレットが必要なのでしょうか?
なぜ複数のアプリケーションコンテキストが必要なのでしょうか?
思考?コメント?訂正?ベストプラクティス?
私は理解し始めていると思う。ルートアプリケーションのコンテキストは、各xmlファイルで定義されているコンテキストとどのように異なる(または関連していますか) –
Webアプリケーションでは、ContextLoaderListenerを使用して通常初期化されるルートコンテキストは、WebApplicationContext.class.getName()+ ".ROOT"という名前のサーブレットコンテキスト(アプリケーションスコープ)変数にルートコンテキストを格納し、以降、各ディスパッチャのセルベット任意のコード)は、サーブレットコンテキスト – Shailendra
にアクセスできる場合、この属性に内部的にアクセスできます。だからこれらのxmlファイル、dao-context.xml service-context.xmlはより多くのコンテキストを作成するか、contextLoaderListenerによって作成されたルートコンテキストに追加するだけですか?これらのXMLファイルの範囲は何ですか? –