技术开发 频道

玩玩Spring之struts+hibernate+spring添删改查示例


 
第五步:配置Spring
 
  大家可以看到,上面我们所做的各部分都是各自为阵、分开的,特别是系统设计师的接口、Web工程师的MVC、数据库开发及主程序员的商业逻辑层的实现,都相互没有关联、整合到一起。甚至就连数据库工程师还不知道数据源从哪儿来,数据库的访问用户名密码等通通不知道。
  那么这些东西怎么相互集成起来,并组合成一个完整的应用拿给用户跑呢?这就是Spring扮演的角色之一了,Spring不是一直号称自己提供了这样那样的支持吗?下面我们来看看是怎么支持的。下面看看Spring的配置文件内容,本例中是applicationContext.xml,全部内容如下:
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
http://www.springframework.org/dtd/spring-beans.dtd">
<beans> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
 <property name="driverClassName">
  <value>org.gjt.mm.mysql.Driver</value>
 </property>
 <property name="url">
  <value>jdbc:mysql://127.0.0.1:3306/easyjf2</value>
 </property>
 <property name="username">
  <value>root</value>
 </property>
 <property name="password">
  <value>mysql</value>
 </property>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true">
 <property name="dataSource">
  <ref local="dataSource" />
 </property>
 <property name="mappingResources">
  <list>
   <value>com/easyjf/example/business/hibernate/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>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory">
  <ref local="mySessionFactory" />
 </property>
</bean>
<bean id="userService" class="com.easyjf.example.business.hibernate.UserDao">
 <property name="sessionFactory">
  <ref local="mySessionFactory" />
 </property>
</bean>
</beans>
 
  其中dataSource部分是配置的数据源,如用户名及密码等,mySessionFactory部分主要针对hibernate的配置文件,userService部分针对hibernateDao的配置,事务的部分没用到。
当然,要让Spring跟Java Web应用集成,还需要配置一下web.xml文件,前面的web.xml已经有了,这里再拿出来大家观摩一下:

 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml</param-value>
 </context-param> 
 <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener> 
 
  看到了吧,通过配置,就可以把刚才我们的几个部分集成到了一起。换一句话着,就是一旦有一天(真有这么一天吗?小样的,别插嘴!)我们需要改系统的某一部份(比如数据库中间件不能用hibernate,而要用iBatis、EasyDBO或者是自己的“轮子”时),也只需要直接在配置文件中修改即可, 而系统的其它部分仍然保留不变。而且各部分的测试也相对独立,因此可以测试到更多的东西(咦,这么说测试工作量不就大了吗?是啊,但出错的机会就少,维护成本就低了,笨)。这即是传说中配置编程,也是面向接口编程乃至面向对象编程的精华之所在。
 
  本示例中,我们主要涉及到的只是Spring最简单的一个IOC容器功能。因此,其值不值得我们HC(喝彩、花痴―凉粉语),我想每人心中都会有一杆秤。对于Spring与struts、hibernate,毕竟是庸俗的黄金组合嘛,他们之间还有更多的合作招式可供大家选择,这里就不一一介绍了,以后会介绍一些有关hibernate组合的!
 
  OK,全文结束。还没睡着或晕的同学请到EasyJF开源团队官网下载本例源码。笔者认识的程序员不少,不过还没看见有谁仅仅靠“观摩”、“理解”就能写出程序的,还要多动手实践,程序跑起来才是硬道理。
0
相关文章