目次へ

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 アプリケーションに改良すること。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ