2016-05-16 12 views

答えて

1

ルートWebApplicationContextは、アプリケーション全体で共有されるSpringアプリケーションコンテキストです。

DispatcherServletインスタンスには、実際にはWebApplicationContextという独自の があります。

アプリケーション内に複数のDispatcherServletインスタンスを持ち、それぞれ独自のWebApplicationContextを持つことができます。あなたは、ルートWebApplicationContextと 複数DispatcherServletsを持っている場合、DispatcherServletsは ルートWebApplicationContextを共有するよう

ルートWebApplicationContextは、アプリケーション 間で共有されます。

しかし、簡単なSpring MVCのアプリケーションのために、1にもルートがをWebApplicationContext持ってする必要はありません状況を持つことができます。 DispatcherServletはそれ自身のWebApplicationContextを持ちますが、実際には親ルートWebApplicationContextを持つ必要はありません。

したがって、どのBeanをルートWebアプリケーションコンテキストに入れる必要があり、どのBeanをDispatcherServletのWebアプリケーションコンテキストに入れる必要がありますか? サービスやDAOなどの一般的なBeanはルートWebアプリケーションコンテキストで動作し、コントローラなどのWeb固有のBeanはDispatcherServletのWebアプリケーションコンテキストに含まれています。

1

AFAIK各DispatcherServletWebApplicationContextとなります。デフォルトでは、DispatcherServletは、WEB-INFフォルダの下の[appname]-servlet.xmlという名前のスプリング構成ファイルを探します。

DispatcherServletを設定する必要がありますか?

はい、すべての要求がルーティングされるので、すべての春のアプリケーションはDispatcherServletを設定する必要があります。要求を処理するためのコントローラクラスの適切なメソッドを決定します。コントローラーが論理ビューと共にmodelを返すと、DispatcherServletは(通常はJSP)を解決し、最終的にブラウザーで表示されるビューにmodelデータを渡します。

ContextLoaderListenerを設定する必要がありますか?

いいえ、これは必須ではありません。 Springアプリケーションは、ContextLoaderListenerを使わずに暮らすことができます。

なぜContextLoaderListenerが必要ですか?

通常、マルチティアアプリケーションをビルドする場合、すべてのBeanを1つの設定ファイル[appname]-servlet.xmlに混乱させたくありません。たとえば、spring securitysecurity-context.xmlに含めるには、サービスレイヤーに属するすべてのBeanをapplicationContext.xmlに設定し、同様にDAOレイヤーに属するBeanをdao-context.xmlに設定する場合もあります。だから、これらのすべてのBeanを別のコンテキストファイルで設定するときは、springが覚えておいて覚えておく必要があります。 ContextLoaderListenerは、他のすべてのコンテキストファイルを認識するのに役立ちます。

希望すると便利です。

関連する問題