[解決済み】Spring MVCのApplicationContextとWebApplicationContextの違いは何ですか?
質問
アプリケーションコンテキストとWebアプリケーションコンテキストの違いは何ですか?
私は、以下のように認識しています。
WebApplicationContext
は、Spring MVCアーキテクチャ指向のアプリケーションに使用されるのですか?
をどのように使うのか知りたい。
ApplicationContext
MVCアプリケーションでは?また、どのようなビーンが
ApplicationContext
?
解決方法は?
Web Application コンテキストは、標準的なアプリケーションコンテキストを拡張したものです。 javax.servlet.ServletContext で、コンテナと通信できるようになります。
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
WebApplicationContextでインスタンス化されたビーンも、ServletContextAwareインターフェースを実装すれば、ServletContextを使用できるようになります。
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
ServletContextインスタンスでできることはたくさんあります。たとえば、getResourceAsStream()メソッドを呼んでWEB-INFリソース(xml設定など)にアクセスすることが挙げられます。 通常、Springアプリケーションのweb.xmlで定義されたアプリケーションコンテキストはすべてWebアプリケーションコンテキストであり、これはルートのWebアプリケーションコンテキストとサーブレットのアプリケーションコンテキストの両方に当てはまります。
また、ウェブアプリケーションコンテキストの機能によっては、アプリケーションのテストが少し難しくなる場合があり、その場合は MockServletContext クラスでテストすることができます。
サーブレットとルートコンテキストの違い Springではアプリケーションコンテキストを多段階で構築できるため、必要なBeanが現在のアプリケーションコンテキストに存在しない場合、親コンテキストから取得されることになります。Webアプリケーションでは、デフォルトでルートコンテキストとサーブレットコンテキストの2つの階層が存在します。 .
これにより、あるサービスはアプリケーション全体のシングルトンとして実行し(Spring Security Beanや基本的なデータベースアクセスサービスは通常ここに存在します)、別のサービスは対応するサーブレットで分離したサービスとして実行し、Bean間の名前の衝突を回避することができます。例えば、あるサーブレットコンテキストはウェブページを提供し、別のサーブレットコンテキストはステートレスなウェブサービスを実装することになります。
この2レベルの分離は、spring サーブレットクラスを使用する際に、すぐに実現できます。 コンテキストパラメータ タグを web.xml に記述します。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/root-context.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
(ルートアプリケーションコンテキストを作成するのは ContextLoaderListener これは web.xml で宣言されています。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) と サーブレット タグは、サーブレットアプリケーションのコンテキスト
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>app-servlet.xml</param-value>
</init-param>
</servlet>
init-paramが省略された場合、springはこの例ではmyservlet-servlet.xmlを使用することになることに注意してください。
こちらもご覧ください。 Spring FrameworkにおけるapplicationContext.xmlとspring-servlet.xmlの相違点
関連
-
[解決済み] org.springframework.web.servlet.PageNotFound noHandlerFound URIを持つHTTPリクエストのマッピングが見つからない。
-
[解決済み】Springのpostメソッド "Required request body is missing"
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
java.sql.SQLException を解決します。ユーザー 'root'@'localhost' (パスワード: YES を使用) のためのアクセスが拒否されました。
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Spring Frameworkの@Injectと@Autowiredの違いは何ですか?どのような条件でどちらを使うか?
-
[解決済み] springの@Controllerアノテーションと@RestControllerアノテーションの違いについて
-
[解決済み】HibernateとSpring Data JPAの違いは何ですか?
-
[解決済み] Spring.jpa.hibernate.ddl-autoプロパティは、Springで具体的にどのように動作しますか?
-
[解決済み] Spring MVC Test によるマルチパート POST リクエストの単体テスト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ユニットテストから ApplicationContext を読み込むのに失敗しました。FileNotFound
-
[解決済み] NamedParameterJDBCTemplate を使用して挿入すると、「無効な列の種類です」という例外が発生する。
-
自動配線された依存関係のインジェクションに失敗する; 自動インジェクションに失敗する問題
-
SLF4J:クラスパスに複数のSLF4Jバインディングが含まれる問題 解決済み
-
アーティファクトXXXXが見つからず、Mavenにalibaba.cloudの依存関係を導入することができませんでした。
-
[解決済み] Spring FrameworkにおけるapplicationContext.xmlとspring-servlet.xmlの相違点
-
[解決済み】データソースの設定に失敗しました:'url'属性が指定されておらず、埋め込まれたデータソースが設定できませんでした。
-
[解決済み] MockitoでSpringの自動配線された@Valueフィールドをモックするにはどうすればよいですか?
-
[解決済み] サーブレットにおける <mvc:annotation-driven /> と <context:annotation-config /> の違いは何ですか?
-
[解決済み] コンテンツタイプ 'application/x-www-form-urlencoded;charset=UTF-8' は @RequestBody MultiValueMap ではサポートされていません。