只要是JavaEE开发那必然会牵扯到三大框架整合开发,当然绝大多数公司都有自己的框架,而且把三大框架都整合好了,你可能只需简单的配置就可以用了,但是你还是要会最基础的三大框架整合,下面我们就简略的说一下。
版本:spring2.5 + struts2.1.6 + hibernate3.2
整合主要步骤:
一、Spring整合Struts2
1、 在web.xml中
加载AppliationContext采用listener方式:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-config/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 配置struts2前端控制器-->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
2、 在struts.xml中
添加Action由spring创建
<constant name="struts.objectFactory"value="spring" />
注意:Action中的class是个“逻辑名称”要与application中bean 的id名一样
具体代码如下:
<struts>
<constant name="struts.objectFactory"value="spring" />
<package name="user"extends="struts-default">
<action name="login" method="login"class="LoginAction">
<resultname="success">/success.jsp</result>
</action>
</package>
</struts>
3、在applicationContext.xml中
实际处理的Action,scope="prototype",该属性说明Action可以生成多个
具体代码如下:
<bean id="LoginAction"scope="prototype" class="action.LoginAction"/>
<!--以上完成了Struts2与Spring的整合-->
二、Spring整合Hibernate
以下配置全部是在applicationContext.xml中
1、配置数据源
Spring内置实现DriverManagerDataSource
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<propertyname="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<propertyname="username">
<value>root</value>
</property>
<propertyname="password">
<value></value>
</property>
</bean>
2、配置sessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propertyname="dataSource">
<ref bean="dataSource"/>
</property>
<propertyname="mappingResources">
<list>
<value>domain/User.hbm.xml</value>
</list>
</property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<propkey="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
3、配置Dao
<bean id="userDao"class="dao.UserDaoHibernateImpl">
<propertyname="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
注意:以上配置是要求Dao 必须继承自HibernateDaoSupport
4、事务:
① Spring事务机制
声明式事务、事务管理器
② 配置事务管理器
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- TransactionAdvice -->
<tx:advice id="txAdvice"transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="update*"propagation="REQUIRED" />
<tx:method name="*"propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!--通过AOP 完成织入 -->
<aop:config>
<aop:advisor pointcut="execution(*service.*(..))"
advice-ref="txAdvice" />
</aop:config>
以上完成了整个SSH的整合
下面补充Spring与JDBC的整合
数据源的配置同上
<bean id="userDao"class="dao.userDaoImpl">
<property name="dataSource"ref="dataSource" />
</bean>
<!-- 注意:以上配置是要求dao 继承JdbcDaoSupport -->
<!-- JDBC事务配置,TransactionManager依赖于dataSource -->
<!-- TransactionManager-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource"ref="dataSource" />
</bean>
<!-- TransactionAdvice -->
<tx:advice id="tsAdvice"transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 通过AOP完成织入 -->
<aop:config>
<aop:pointcut id="pc"expression="execution(* dao.userDao.*(..))"/>
<aop:advisor advice-ref="tsAdvice"pointcut-ref="pc" />
</aop:config>