アーキテクチャ統合のポイント.


統合spring 2+struts 1.2 + hibernate3.2
プログラムがspring 2を使用するには、springプラグインjarパッケージとspringのクラスライブラリの外が必要です.
1.web.xmlはspringのリスニングを構成します.

     <listener>
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
       </listener>



contextConfigLocationコンテキストパラメータによるspringプロファイルの指定

	<context-param>
		<param-name>
			javax.servlet.jsp.jstl.fmt.localizationContext
		</param-name>
		<param-value>/i18nMessage/MessageResources</param-value>
	</context-param>

2.Spring統合struts 1
Spring strutsのサポートには、プロキシモード、コントローラ継承、プラグインモードの3つのモードがあり、ここではコントローラモードを使用します.すなわちspirngのcontrollerプロセッサを採用し、実際にspringのプロセッサはstrutsを継承する.修正したstrutsは以下の通りです.
struts-config.xml構成
           <controller>
                    <set-property property="processorClass"    value="org.springframework.web.struts.DelegatingRequestProcessor"/>
             </controller>   

struts-action.xmlとspring-action.xml構成


<action path="/departmentAction" name="departmentForm"
			attribute="departmentForm" scope="request" parameter="dispatch">
			<forward name="error" path="/error.jsp" />
			<forward name="update"
				path="/department/departmentForm.jsp" />
			<forward name="list" path="/department/department.jsp" />
			<forward name="flagAlex" path="/department/departmentflagAlex.jsp" />
			<forward name="selTreeList" path="/dialog/selectTree.jsp" />
			<forward name="treeList" path="/department/tree.jsp" />
			<forward name="treeDept" path="/serviceItem/treeDept.jsp" />	
			<forward name="selectTreeList" path="/docFlow/runFlow/selectTreeList.jsp"/>
		</action>

	<bean name="/departmentAction"
		class="com.ving.xzfw.action.DepartmentAction" scope="request">
		<property name="departmentService" ref="departmentService" />
		<property name="disService" ref="distictService" />
		<property name="dictionaryTypeService"
			ref="dictionaryTypeBOService" />
		<property name="dictionaryService" ref="dictionaryService" />
		<property name="logInfoService" ref="logInfoService" />			
	</bean>


beanのname属性はactionのpathの名前と同じでなければなりません
このようにstrutsのactionはspringのIOC特性を使うことができます
3 spring集積hibernate
  
  <bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
                  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
                  <property name="url" value="jdbc:mysql://localhost:3306/music"/>
                <property name="username" value="root"/>
                  <property name="password" value="admin"/>
    </bean>
    
<bean name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"> 
           <ref bean="dataSource"/> 
        </property>     
       <property name="mappingResources"> 
         <list>
           <value>com/tlb/db/domain/User.hbm.xml</value>
           <value>com/tlb/db/domain/Song.hbm.xml</value>
         </list> 
       </property> 
       <property name="hibernateProperties"> 
          <props> 
             <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
             <prop key="hibernate.show_sql">true</prop>
          </props> 
       </property> 
    </bean>

     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

     <bean name="userDao" class="com.tlb.db.dao.UserDao">
       <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    
の構成が完了すると、DAOでsessionFactoryを呼び出してさまざまな操作を行うことができます.自分でデータベースの共通クラスをたくさん書く必要はありません.HibernateDaoSupportは豊富な方法を提供し、私たちが使用するのに十分です.またspringの異常なパッケージメカニズムのため、私たちのプログラムコードは、try catchを多く必要としません.
public class UserDao extends HibernateDaoSupport implements IUserDao {

public void insUser(User user) throws DataAccessException {
   // TODO Auto-generated method stub
   this.getHibernateTemplate().save(user);
}

}