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