《精编最新Spring 快速入门教程》由会员分享,可在线阅读,更多相关《精编最新Spring 快速入门教程(41页珍藏版)》请在金锄头文库上搜索。
1、Spring 快速入门教程开发你的第一个 Spring 程序翻译整理:Hantsy Bai本章学习用 struts MVC 框架作前端,Spring 做中间层,Hibernate 作后端来开发一个简单的Spring 应用程序。在第4章将使用Spring MVC 框架对它进行重构。本章包含以下内容:编写功能性测试。配置Hibernate 和Transaction。载入Spring 的applicationContext.xml文件。设置业务代理(business delegates)和 DAO的依赖性。把spring 写入Struts 程序。概述你将会创建一个简单的程序完成最基本的CRUD(Cr
2、eate, Retrieve, Update和 Delete)操作。这个程序叫 MyUsers,作为本书的样例。这是一个 3 层架构的 web 程序,通过一个Action 来调用业务代理,再通过它来回调 DAO 类。下面的流程图表示了 MyUsers 是如何工作的。数字表明了流程的先后顺序,从 web 层(UserAction)到中间层(UserManager),再到数据层(UserDAO),然后返回。鉴于大多数读者都比较熟悉 struts,本程序采用它作为MVC 框架。Spring 的魅力在于它宣称式的事务处理,依懒性的绑定和持久性的支持。第4 章中将用 Spring 框架对它进行重构。接下
3、来你会进行以下几个步骤:1.下载Struts 和Spring。2.创建项目目录和ant Build 文件。3.为持久层创建一个单元测试(unit tests)。4.配置Hibernate 和Spring。5.编写HIbernate DAO 的实现。6.进行单元测试,通过DAO 验证CRUD。7.创建一个Manager 来声明事务处理。8.为struts Action 编写测试程序。9.为web 层创建一个Action 和model(DynaActionForm)。10.进行单元测试,通过Action验证CRUD。11.创建 JSP页面,以通过浏览器来进行CRUD 操作。12.通过浏览器来验证J
4、SP页面的功能。13.用 velocity模板替换 JSP页面。14.使用 Commons Validator添加验证。下载 Struts 和 Spring1.下载安装以下组件:JDK1.4.2(或以上)Tomcat5.0+Ant 1.6.1+2.设置以下环境变量:JAVA_HOMEANT_HOMECATALINA_HOME3.把以下路径添加到PATH 中:JAVA_HOME/binANT_HOME/binCATALINA_HOME/bin为了开发基于java 的web 项目,开发人员必须事先下载必需的jars,建好开发目录结构和ant build 文件。对于单一的struts项目,可以利用s
5、truts 中现成的struts-blank.war。对于基于Spring MVC 框架的项目,可以用Spring中的webapp-minimal.war。这只为开发作准备,两者都没有进行struts-spring集成,也没有考虑单元测试。为此,我们为读者准备了Equinox。Equinox 为开发 Struts-spring式的程序提供一个基本框架。它已经定义好了目录结构,和ant build 文件(针对compiling,deploying,testing),并且提供了struts, spring,Hibernate开发要用到的 jars文件。Equinox中大部分目录结构和ant bui
6、ld 文件来自我的开源项目AppFuse。可以说,Equinox 是一个简化的AppFuse,它在最小配置情况下,为快速web 开发提供了便利。由于Equinox源于AppFuse,所以在包名,数据库名,及其它地方都找到它的影子。这是为让你从基于Equinox的程序过渡到更为复杂的AppFuse。从 http:/ Equinox,解压到一个合适的位置,开始准备MyUsers 的开发。创建项目目录和 ant build 文件为了设置初始的目录结构,把下载的Equinox解压到硬盘。建议 windows用户把项目放在C:Source,Unix/Linux 用户放在/dev(译注:在当前用户目录建一
7、个dev目录)中。windows用户可以设置一个 HOME环境变量,值为C:Source。最简单的方法是把Equinox 解压到你的喜欢的地方,进入equinox 目录,运行ant new -Dapp.anme=myusers。tips:在windows 使用cygwin(www.cygwin.org)就可以像Unix/Linux系统一样使用正斜杠,本书所有路径均采用正斜杠。其它使用反斜杠系统(如 windows中命令行窗口)的用户请作相应的调整。现在 MyUsers 程序已经有如下的目录结构:Equinox包含一个简单而功能强大的build.xml,它可以用 ant来进行编译,布署,和测试。
8、ant中已经定义好 targets,在equinox运行ant,将看到如下内容:echo Available targets are: echo compile Compile all Java files echo war Package as WAR file echo deploy Deploy application as directoryecho deploywar Deploy application as a WAR file echo install Install application in Tomcat echo remove Remove application fr
9、om Tomcat echo reload Reload application in Tomcat echo start Start Tomcat application echo stop Stop Tomcat application echo list List Tomcat applications echo clean Deletes compiled classes and WAR echo new Creates a new projectEquinox支持 tomcat的 ant tasks(任务)。这些已经集成在Equinox中,解讲一下如何进行集成的有助于理解它们的工作原
10、理。Tomcat 和 anttomcat 中定义了一组任务,可以通过Manager 来安装(install),删除(remove),重载(reload)webapps。要使用这些任务,可以把所有的定义写在一个属性文件中。在 Eqinox的根目录下,有一个名为tomcatTasks.properties包含如下内容。deploy=org.apache.catalina.ant.DeployTaskundeploy=org.apache.catalina.ant.UndeployTaskremove=org.apache.catalina.ant.RemoveTaskreload=org.apac
11、he.catalina.ant.ReloadTaskstart=org.apache.catalina.ant.StartTask stop=org.apache.catalina.ant.StopTask list=org.apache.catalina.ant.ListTask在 build.xml 定义一些任务来安装,删除,重新载入应用程序。在上面列出的target 中,必须定义一些$tomcat.*变量。在根目录下有一个build.properties默认定义如下:# Properties for Tomcat Servertomcat.manager.url=http:/localh
12、ost:8080/manager tomcat.manager.username=admin tomcat.manager.password=admin确保 admin 用户可以访问Manager应用,打开$CATALINA_HOME/conf/tomcat-users.xml中是否存在下面一行。如果不存在,请自己添加。注意,roles属性可能是一个以逗号(“,”)隔开的系列。为了测试所有修改,保存所有文件,启动tomcat。从命令行中进行myusers 目录,运行ant list,可以看到 tomcat server上运行的应用程序。好了,现在运行 ant deploy来安装MyUsers。
13、打开浏览器,在地址栏中输入http:/localhost:8080/myusers,出现如图 2.4的“Equinox Welcome”画面。下一节,将写一个User 对象和一个维护其持久性的 Hibernate DAO对象。用Sping 来管理DAO 类及其依赖性。最会写一个业务代理,用到AOP和声明式事务处理。为持久层编写单元测试在 myUsers 程序,使用Hibernat 作为持久层。Hinbernate是一个 O/R 映像框架,用来关联java对象和数据库中的表(tables)。它使得对象的CRUD 操作变得非常简单,Spring结合了Hibernate变得更加容易。从Hiberna
14、te转向 Spring+Hibernate会减少75%的代码。这主要是因为,ServiceLocater和一些DAOFactory类的废弃,spring的实时异常代替了Hibernate的检测式的异常。写一个单元测试有助于规范 UserDAO 接口。为UserDAO写一个JUint 测试程序,要完成以下几步:1.在 test/org/appfuse/dao 下新建一个UserDAOTest.java 类。它继承了同一个包中的BaseDAOTestCase,其父类初始化了Spring的ApplictionContext(来自web/WEB-INF/applictionContext.xml),以
15、下是JUnit 测试的代码。package org.appfuse.dao; / use your IDE to handle importspublic class UserDAOTest extends BaseDAOTestCase private User user = null; private UserDAO dao = null;protected void setUp() throws Exception log = LogFactory.getLog(UserDAOTest.class); dao = (UserDAO) ctx.getBean(“userDAO“); pro
16、tected void tearDown() throws Exception dao = null; public static void main(String args) junit.textui.TestRunner.run(UserDAOTest.class); 这个类还不能编译,因为还没有UserDAO 接口。在这之前,来写一些来验证User 的CRUD 操作。2.为 UserDAOTest类添加 testSave 和testAddAndRemove 方法,如下:public void testSaveUser() throws Exception user = new User(); user.setFirstName(“Rod“); user.setLastName(“Johnson“);dao.saveUser(user); assertTrue(“primary