Spring、Struts2、Hibernate集成开…

来源:互联网 发布:淘宝网店推广策划案 编辑:程序博客网 时间:2024/05/01 21:37

      只要是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

      添加Actionspring创建

      <constant name="struts.objectFactory"value="spring" />

      注意:Action中的class是个逻辑名称要与applicationbean 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>

 

3applicationContext.xml

      实际处理的Actionscope="prototype",该属性说明Action可以生成多个 

具体代码如下:

      <bean id="LoginAction"scope="prototype" class="action.LoginAction"/>

<!--以上完成了Struts2Spring的整合-->

 

二、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的整合

 

下面补充SpringJDBC的整合

数据源的配置同上

      <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>

 

0 0
原创粉丝点击