其實在這個三個框架中最爲重量級的就是Spring,它將Struts的action當作bean整合,將hibernate的cfg,hbm整合,還有事務管理,下面一一整合到項目當中去,
例如:創建個用戶管理系統(暫時只提供查詢功能和刪除功能)
一丶先設計Dao層
用戶:User類
private String username;
private String password;
private String realname;
生成hibearnate-mapping文件
<hibernate-mapping>
<class name="bean.User" table="user">
<id name="id" type="java.lang.Integer">
<column name="id" ></column>
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username"></column>
</property>
<property name="password" type="java.lang.String">
<column name="password"></column>
</property>
<property name="realname" type="java.lang.String">
<column name="realname"></column>
</property>
</class>
</hibernate-mapping>
設計Dao接口
1.查詢單個用戶
2.查詢全部用戶
3.刪除單個用戶
4.刪除全部用戶
整合hibernate和spring:
思路分析:
在Dao層用到SessionFactory,需要在spring文件dao層依賴注入sessionfactory
而sessionFactory需要datasource,cfg,hbm
具體實施:
1.在applicationContext.xml
因爲讀取Property文件所以加入該行代碼
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
<property name="mappingResources">
<list>
<value>bean/User.hbm.xml</value>
</list>
</property>
</bean>
——————Dao層設計完畢——————–
二丶設計Service層
分析
無非就是事務屬性的增強
首先定義一個事務屬性
然而需要個事務管理器
所以
首先定義事務管理器,然後,定義事務屬性,最後,aop操作。
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice transaction-manager="transactionManager" id="txadvice1">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="execution (* service.*.*(..))" id="pointcut1"/>
<aop:advisor advice-ref="txadvice1" pointcut-ref="pointcut1"/>
</aop:config>
—–Service配置完畢——
三丶配置Controll層
思路:
Controll的配置無非就是配置Action,配置Bean,在Struts配置Action
我們之前說過Spring就是管理Action 所以將Action的位置交友spring
然後將struts與spring建立鏈接就行了。
設計:
<bean id="useraction" class="action.UserAction" scope="prototype">
<property name="userservice" ref="userservice"></property>
</bean>
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="defalut" namespace="/" extends="struts-default">
<action name="userAction_*" class="useraction" method="{1}">
<result name="list">/show.jsp</result>
<result name="delete" type="redirectAction">/userAction_findAll.action</result>
</action>
</package>
</struts>