Spring Petclinic是一个基于Spring Boot的应用,使用Maven或Gradle构建。您可以从命令行构建jar文件并运行(兼容Java 17或更高版本):
git clone https://github.com/spring-projects/spring-petclinic.git
cd spring-petclinic
./mvnw package
java -jar target/*.jar
(在Windows上,或者如果您的shell不支持通配符扩展,可能需要明确指定JAR文件名)
运行后可通过http://localhost:8080/访问Petclinic。
或者直接使用Spring Boot Maven插件运行(代码变更会自动加载,Java源文件变更需要重新编译):
./mvnw spring-boot:run
注意: 如果使用Gradle,可以用
./gradlew build构建,jar文件位于build/libs。
项目中没有Dockerfile,但可以使用Spring Boot构建插件创建容器镜像:
./mvnw spring-boot:build-image
我们的问题跟踪器在这里。
默认配置使用内存数据库(H2),启动时自动填充数据。H2控制台可通过http://localhost:8080/h2-console访问,使用启动时打印的jdbc:h2:mem:<uuid> URL连接。
也支持MySQL和PostgreSQL持久化数据库。切换数据库类型时需要激活相应profile:
spring.profiles.active=mysqlspring.profiles.active=postgres参考Spring Boot文档了解如何设置active profile。
可以使用Docker启动数据库:
# MySQL
docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:9.1
# PostgreSQL
docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:17.0
更多文档:
也可以使用提供的docker-compose.yml文件:
# MySQL
docker compose up mysql
# PostgreSQL
docker compose up postgres
开发时推荐使用测试应用:
PetClinicIntegrationTests: 使用H2内存数据库MySqlTestApplication: MySQL测试PostgresIntegrationTests: PostgreSQL测试MySQL测试使用Testcontainers启动Docker容器,PostgreSQL测试使用Docker Compose。
CSS文件petclinic.css由petclinic.scss生成,结合了Bootstrap库。修改scss后需要使用Maven profile "css"重新编译:
./mvnw package -P css
(Gradle没有对应的CSS编译配置)
需要安装:
克隆仓库:
git clone https://github.com/spring-projects/spring-petclinic.git
在Eclipse/STS中:
文件 -> 导入 -> Maven -> 现有Maven项目导入./mvnw generate-resources或Eclipse启动器生成CSS运行为 -> Java应用程序在IntelliJ IDEA中:
文件 -> 打开选择pom.xmlPetClinicApplication主类访问应用:
| Spring Boot配置 | 类或Java属性文件 |
|---|---|
| 主类 | PetClinicApplication |
| 属性文件 | application.properties |
| 缓存配置 | CacheConfiguration |
主分支spring-projects/spring-petclinic是基于Spring Boot和Thymeleaf的规范实现。spring-petclinic组织中有许多使用不同技术栈的实现。
开发Spring Petclinic应用的一个好处是可以直接与许多开源项目合作。我们发现并修复了许多项目中的问题,如Spring、Spring Data、Bean Validation甚至Eclipse!
| 名称 | 问题 |
|---|---|
| Spring JDBC | SPR-10256 |
| Bean Validation | HV-790 |
| Spring Data | DATAJPA-292 |
问题跟踪器是报告问题、请求功能和提交pull request的首选渠道。
提交pull request时请遵循编辑器配置。所有提交消息必须包含Signed-off-by尾部,表示贡献者同意开发者原创证书(DCO)。详情参考博客Hello DCO, Goodbye CLA。
Spring PetClinic示例应用基于Apache 2.0许可证发布。