`
huqi
  • 浏览: 97006 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从建立宠物医院(PetClinic)项目开始你的Spring2之旅

阅读更多

搞Java企业级应用的人都知道Spring是个好东西,记得这玩意1.0出来的时候,有人甚至说“有了Spring,架构师就可以下岗了”。当然,Spring不是上帝,它提供的只是一套优雅的框架(Framework)。

这套框架以依赖注入(Dependency Injection)控制反转(IOC,Inversion of Control)和面向切面编程(AOP,Aspect Oriented Programming)为核心思想。前者以Spring bean配置的方式来划分应用中服务的层次,并对各个应用模块及业务逻辑的松散耦合、甚至解耦合提供了完美的支持;而后者在日志、监控管理,特别是事务管理方面为开发者提供了一套极为轻便、灵活,而且有效的架构——我们只需要站在程序的横切面角度去配置一些“拦截”、“代理”就可以轻松的解决上述问题,而不需要去关注线性的程序结构、甚至不需要去修改一行代码,真正做到无任何“伤筋动骨”的为我们的应用去添加、变更、去除这些诸如日志、监控、事务等的功能。

同时,Spring也一贯本着“不重复发明轮子”的基本指导思想,在其内集成或封装了大量的开源项目,而且这些开源项目都是经过精心挑选的,至少在其领域内是具有实用价值的。这包括著名的ORM框架Hibernate,任务调度引擎Apache Quartz,以及JMS、JMX这些Java标准……

那么,如果你想试用和了解Spring2的强大功能和技术架构,我认为在Tomcat上运行一下它的范例项目petclinic(宠物医院)是个不错的选择。

首先,你可以在Spring2完整发布版的samples目录下发现这个项目。我喜欢把项目导入到Eclipse中运行,这样可以很方便的随时跟踪和学习源代码,所以,就以此为例吧。

先将这个项目拷贝到你需要的位置,然后就不要变更这个路径了。

1、执行这个项目根目录下的build.xml(如何利用ant执行构建在这里就不说了),使用ant all吧。这样你会在dist目录中获得可部署的war文件,注意:如果build不成功的话,你有可能需要更改build.xml的<property name="spring.root" value="../.."/>这一行,修正Spring2的根路径。

2、使用数据库——在db目录下有我们需要的所有数据库文件、脚本。默认提供hsqldb和mysql两种数据库支持方式,我们选择前者,因为简单。进入hsqldb目录运行server.bat启动数据库,manager.bat可以打开控制台管理数据库(具体如何使用hsqldb这里就不说了,很简单的),然后我们可以使用initDB.txt建库表,使用populateDB.txt加入初始化数据。如果启动失败,你可以检查一下你的server.bat中"%JAVA_HOME%/bin/java" -classpath hsqldb.jar org.hsqldb.Server -database petclinic是否正确,修正hsqldb.jar的路径(建议直接把这个jar复制到此目录中),manager.bat同理。

3、在Eclipse中建立petclinic项目——在petclinic目录根下新建Java项目即可,源程序目录设定为src。如果你想做jUnit test则需要引入spring-mock.jar(这在Spring2的dist中可以找到),这样你就可以利用test目录中的内容执行单元测试了。因为web module目录名为war,则相应的我们输出目录应修改为:war/WEB-INF/classes。

4、相信你已经在IDE中安装好的Tomcat插件了吧(什么?没有,那你还玩什么Spring,推荐你去下载官方的Eclipse Tomcat插件吧:http://www.eclipsetotale.com/tomcatPlugin.html),部署刚才建立好的petclinic项目上去,启动数据库,运行Tomcat。

5、打开petclinic的首页,一般来说是http://127.0.0.1:8080/petclinic,如何,能看到正确的页面么?也许你会遇到以下这两个问题:

先是报告web.xml的tag标签格式或位置不正确之类的错误。这是因为你用的是Tomcat4.X,而petclinic的前端展现使用的是jstl,它需要中间件支持http://java.sun.com/dtd/web-app_2_4.dtd规范,而Tomcat4.X只支持到2.3规范,所以,换成Tomcat5.X就好了。

然后你有可能碰到诸如资源文件找不到之类的问题(Resource not found),这是用于你的国际化资源文件没有在源路径中的问题,解决方法:拷贝原始项目中WEB-INF/classes中的messages*.properties文件到你的src根目录下,再重新编译一遍项目即可。

6、现在,你的宠物医院应该可以正常工作了!

这个范例同时提供了多种持久化方案的示范,这包括JDBC(默认的),Hibernate,JPA,Toplink。更改web.xml的contextConfigLocation属性即可轻松的切换这些持久化方案,通过学习这些不同的持久化实现,你能充分体会到Spring“不重复发明轮子”的魅力及其架构精髓。

需要注意的是,如果是JPA(Java持久化架构)方案的话,需要将spring-tomcat-weaver.jar拷贝到TOMCAT_HOME/server/lib,同时在你的Tomcat Context path中指定一个特殊的类加载器,像这样:

<Context path="/petclinic" docBase="/petclinic/location" ...>
  
<!-- please note that useSystemClassLoaderAsParent is available since Tomcat 5.5.20; remove it if previous versions are being used -->
  
<Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" useSystemClassLoaderAsParent="false"/>
...
</Context>

Spring2使用的是Hibernate3.X版本,如果需要使用merge这个操作的话,需要在Spring配置文件中为Hibernate的SessionFactory注册一个IdTransferringMergeEventListener,利用Spring的默认实现就行,PetClinic里面有相应的示例。



分享到:
评论

相关推荐

    Spring框架的示例项目源码 Spring Petclinic

    **Spring框架的示例项目源码 - Spring Petclinic** Spring Petclinic是Spring官方提供的一款开源示例应用,它用于展示Spring框架的各种特性及其在实际开发中的应用。该项目可以帮助开发者理解和学习Spring框架的...

    spring petclinic

    Spring PetClinic是Spring官方提供的一款开源示例应用,它主要用于展示Spring框架的核心特性及其在实际项目中的应用。这个项目不仅适用于初学者理解Spring的工作原理,也为有经验的开发者提供了一个实战的参考模板。...

    spring-petclinic:示例 Spring Petclinic 项目

    然后您可以在此处访问 petclinic: 如果您发现 Spring Petclinic 的错误/建议改进我们的问题跟踪器可以在这里找到: : 在 Eclipse/STS 中使用 Petclinic先决条件您的系统中应安装以下项目: Maven 3 ( ) git 命令行...

    Spring + Hibernate 例子(使用petclinic, 利用ant)

    该项目模拟了一个宠物诊所的管理,包括宠物、主人、预约等实体的增删改查操作,是学习和理解Spring框架的绝佳实践。 “利用ant”表示这个例子使用Ant作为构建工具。Ant是Apache组织提供的一个Java项目构建工具,...

    compass PetClinic 项目源码及工程

    本文将深入探讨“compass PetClinic”项目,这是一个基于Spring Boot的Java Web应用,它提供了宠物诊所管理的功能,对于理解Spring框架以及微服务架构有着极大的帮助。我们将分析其源码,了解其设计模式、数据库交互...

    spring petclinic project

    《Spring PetClinic项目详解:领略Spring框架与Java后端开发的魅力》 Spring PetClinic项目是Spring官方推出的一个小型示例应用,旨在帮助开发者更好地理解和掌握Spring框架的核心功能和特性。这个项目不仅是一个...

    spring-petclinic-angular:Spring Petclinic示例应用程序的Angular 8版本(前端)

    Spring Petclinic的角形前端 警告:仅客户端。 从后端使用REST API在启动前端应用程序之前,您需要启动后端服务器。 屏幕截图 安装 按照描述将更新到最新版本(当前为8.0.3)。 npm uninstall -g angular-cli @...

    spring-petclinic:一个基于Spring的示例应用程序

    通过一些图表了解Spring Petclinic应用程序 在本地运行诊所 Petclinic是使用构建的应用程序。 您可以构建一个jar文件并从命令行运行它: git clone https://github.com/spring-projects/spring-petclinic.git cd ...

    spring-petclinic-angularjs:Spring Petclinic示例应用程序的AngularJS 1和Spring Boot 2版本

    Spring PetClinic示例应用程序的AngularJS和Spring Boot版本 通过一些图表了解Spring Petclinic应用程序 在本地运行诊所 git clone https://github.com/spring-petclinic/spring-petclinic-angularjs.git cd spring-...

    springframework-petclinic:Spring框架宠物诊所

    Spring Framework宠物诊所项目是一个经典的示例应用,它以一个模拟的宠物诊所管理软件为背景,全面展示了Spring Framework的核心特性与使用方法。这个项目不仅对于初学者理解Spring框架有极大的帮助,也是经验丰富的...

    spring-petclinic:自己的定制宠物诊所

    然后您可以在此处访问 petclinic: 如果您发现 Spring Petclinic 的错误/建议改进我们的问题跟踪器可以在这里找到: : 在 Eclipse/STS 中使用 Petclinic先决条件您的系统中应安装以下项目: Maven 3 ( ) git 命令行...

    petclinic:宠物诊所Spring5示例

    首先,我们要明白“petclinic”项目是一个模拟宠物诊所管理的应用,它涵盖了常见的业务场景,如宠物登记、主人信息管理、预约服务等,是学习和实践Spring MVC的绝佳平台。该项目使用Maven进行构建,依赖管理简洁明了...

    spring-petclinic:研究弹簧靴的项目

    通过一些图表了解Spring Petclinic应用程序 在本地运行诊所 Petclinic是使用构建的应用程序。 您可以构建一个jar文件并从命令行运行它: git clone https://github.com/spring-projects/spring-petclinic.git cd ...

    spring-petclinic

    Spring PetClinic 示例应用程序 它是什么样子的? -spring-petclinic 已部署在 cloudfoundry 上: ://demo-spring-petclinic.cfapps.io/ 几张图了解Spring Petclinic应用 在本地经营宠物诊所 git clone ...

    spring-petclinic-master:Spring诊所

    然后,您可以在此处访问petclinic: 如果您发现Spring Petclinic的错误/建议的改进我们的问题跟踪器可在以下位置找到: : 数据库配置在默认配置下,Petclinic使用内存数据库(HSQLDB),该数据库在启动时会填充数据...

    spring-petclinic-master

    SpringPetClinic样品申请通过一些图表了解Spring Petclinic应用程序在本地运行诊所git clone https://github.com/spring-projects/spring-petclinic.gitcd spring-petclinic./mvnw spring-boot:run 然后,您可以在...

    spring-petsore spring官方最新demo

    Spring PetClinic是Spring官方提供的一款用于教学和展示Spring框架功能的开源项目。它是一个简单的宠物诊所管理应用,旨在帮助开发者理解Spring框架的各种核心特性以及最佳实践。这个项目对于学习Spring MVC、Spring...

    spring-petclinic-rest:Spring Petclinic示例应用程序的REST版本

    REST版本的Spring PetClinic示例应用程序(spring-framework-petclinic扩展) Spring Petclinic应用程序的此后端版本仅提供REST API。 没有UI 。 是使用REST API的Angular前端应用程序。 通过一些图表了解Spring ...

Global site tag (gtag.js) - Google Analytics