在整合 JSF、Spring 與 iBatis 時,關鍵在於正確配置 web.xml、Spring 容器以及 iBatis 的映射檔案。以下將分層說明各設定重點。
必須在 web.xml 中加入 Spring 的 ContextLoaderListener,讓 Spring 容器在 Web 應用啟動時自動初始化。同時若使用 MyFaces 實作 JSF,亦需註冊其啟動監聽器:
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Spring 負責管理資料源(DataSource)與 iBatis 的 SqlMapClient,透過依賴注入將兩者結合。範例使用 DBCP 連線池連接 MySQL:
<!-- 資料源設定 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://192.168.102.19/bookadmin</value></property>
<property name="username"><value>bookadmin</value></property>
<property name="password"><value>123456</value></property>
</bean>
<!-- iBatis SqlMapClient -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:thiz/ks/bookadmin/dao/ibatis/SqlMapConfig.xml</value>
</property>
</bean>
此三層整合方式將表現層(JSF)、業務層(Spring)與持久層(iBatis)清晰分離,Spring 統一管理物件生命週期與事務,iBatis 提供靈活的 SQL 映射,適合中小型專案快速開發。