只要是JavaEE开发那必然会牵扯到三大框架整合开发,当然绝大多数公司都有自己的框架,而且把三大框架都整合好了,你可能只需简单的配置就可以用了,但是你还是要会最基础的三大框架整合,下面我们就简略的说一下。
版本:spring2.5 + struts 2.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">
<result name="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">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
2、配置sessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>domain/User.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>
3、配置Dao
<bean id="userDao" class="dao.UserDaoHibernateImpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
注意:以上配置是要求Dao 必须继承自HibernateDaoSupport
4、事务:
① Spring事务机制
声明式事务、事务管理器
② 配置事务管理器
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="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>