違いがある可能性があり、通常は違いがあります。
基本的にapplicationContext.xml
、ユーザーはルート コンテキストであり、サービスおよびデータ層 Bean が存在する場所です。
*-servlet.xml
または、webmvc-config.xml
次の点で特別です。
- 関連
DispatcherServlet
する
- いつも
WebApplicationContext
豆工場です
- ルート コンテキストの子である ( である場合もある
WebApplicationContext
)
しかし、人々がこれを行う最大の理由は、単体テスト、バックエンドからフロントエンドを切り離すこと、および個別のビュー リゾルバーおよび/または複数のディスパッチャー サーブレットのためです。
サービス層をテストするためにロードする Bean が少なくなるため、単体テストに適しています。以下のコメントで述べたように、私は通常、本当のapplicationContext.xml
ようなものをロードします。
@ContextConfiguration(locations = "classpath:/META-INF/spring/applicationContext.xml")
また、サーブレット コンテキストにはディスパッチャ サーブレットが必要なため、次のようにサーブレットとして登録する必要があります。
<servlet>
<servlet-name>my-web</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
したがって、MVC コントローラー Bean をルート コンテキストでロードできるかもしれませんが、ディスパッチャー サーブレットがそのコンテキストを制御しない限り、それらは実際には登録されません。理論的には、クラスパスに構成をロードできると思いますDispatcherServlet
が、 contextConfigLocation 値がクラスパスにないことに注意してください。
また、通常は 1 つのリゾルバー チェーン (ビュー、ロケール、テーマなど) しか持てないという制限があるため、複数のディスパッチャー サーブレットが必要な人もいます。