2012年3月19日月曜日

ContextLoaderListener


前回の「component-scan と Stereotypeアノテーション」で、IoC Container の機能を提供する ApplicationContext インターフェース――アプリケーションを構成するための一般的な機能を提供する BeanFactory のサブインターフェース――について少し触れました。Spring Framework には、さらに ApplicationContext のサブインターフェースの一つとして Web アプリケーション向けの WebApplicationContext が用意されています。

WebApplicationContext の立ち上げ
WebApplicationContext の立ち上げは、ブートストラップリスナーである“ContextLoaderListener”が行います。そのための指定は web.xml の中で行います。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
  :
 中 略
  :
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
  :
 中 略
  :
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/applicationContext.xml
  </param-value>
 </context-param>
  :
 中 略
  :
 <!-- Dispatcher -->
 <servlet>
  <servlet-name>venus</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
  :
 中 略
  :
</web-app>

listener要素として web.xml に登録された ContextLoaderListener は、WebApplicationContext 立ち上げ時に ContextLoader を呼び出し、XML ファイルに記述されたメタデータに基づいてアプリケーションコンテキストの初期化を行います。この XML ファイルの所在を指定しているのが context-param 要素内の contextConfigLocation です。

Spring Web Flow や Spring Security といった複数のフレームワークを利用するような場合、それぞれに専用の XML ファイルを作る方がすっきりします。そのような時には contextConfigLocation の中の param-value 要素に必要なファイルをカンマ、あるいはスペース区切りで指定することができます。

今のところ /WEB-INF/applicationContext.xml というデフォルトの状態で事足りているため contextConfigLocation の指定は不要ですが、いずれファイルを増やしていくことになると思うので覚書的に敢えて記述しています。

0 件のコメント:

コメントを投稿