- 4.1. ApplicationContext
- 4.2. MessageSource
- 4.3. イベントの伝播
- 4.4. Web アプリケーションでの ApplicationContext の利用
4.4. Web アプリケーションでの ApplicationContext の利用
Web アプリケーションで ApplicationContext を使用する際その都度 ApplicationContext を生成するのは煩雑です。Spring
では Web アプリケーション起動時に Bean 定義ファイルを読み込み ApplicationContext を生成する機能が提供されています。生成される
ApplicationContext の具象クラスは org.springframework.web.context.support.XmlWebApplicationContext
です。 この機能を使用するにはまず web.xml に以下の設定を記述します。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
Servlet 2.2 に準拠した Servlet コンテナでは Listener が使用できないので以下のようにします。
<servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
いずれの場合も起動時に Bean 定義ファイルを読み込みますが、デフォルトでは /WEB-INF/applicationContext.xml を読み込もうとします。複数のファイルを読み込みたい場合や、ファイルパスを変更したい場合は context-param 要素を使用します。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value> </context-param>
param-name 要素に "contextConfigLocation" を指定し、param-value 要素に読み込む定義ファイルを Web アプリケーションルートからの絶対パスで指定します。複数のファイルを指定する場合は例のようにホワイトスペースで区切ります。区切り文字としては他に "," (カンマ)、";" (セミコロン) が使用できます。
ApplicationContext を Servlet や Struts の Action から取得するには以下のようにします。
WebApplicationContext wac = WebApplicationContextUtils .getRequiredWebApplicationContext(this.getServlet() .getServletContext());
実習課題 3
3章の実習課題 3 を改良しなさい。
- ApplicationContext を使用すること。
- コンソールアプリケーションから Web アプリケーションに改良すること。