其实在这个三个框架中最为重量级的就是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>