Spring Petclinic Rest

REST version of the Spring Petclinic sample application
Alternatives To Spring Petclinic Rest
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Spring Boot Api Project Seed9,214
6 months ago112Java
:seedling::rocket:一个基于Spring Boot & MyBatis的种子项目,用于快速构建中小型API、RESTful API项目~
Spring Boot Projects4,551
3 months ago2apache-2.0Java
:fire: 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。
Spring Cloud Rest Tcc2,474
3 years agoJava
以Spring Cloud Netflix作为服务治理基础, 展示基于tcc思想所实现的分布式事务解决方案
White Jotter2,144
6 months ago20mitJava
白卷是一款使用 Vue+Spring Boot 开发的前后端分离项目,附带全套开发教程。(A simple CMS developed by Spring Boot and Vue.js with development tutorials)
Xbin Store2,116
2 years ago20gpl-3.0Java
模仿国内知名B2C网站,实现的一个分布式B2C商城 使用Spring Boot 自动配置 Dubbox / MVC / MyBatis / Druid / Solr / Redis 等。使用Spring Cloud版本请查看
Spring Boot Leaning2,068
8 months ago1Java
Spring Boot 2.X 最全课程代码
X Springboot1,731
a month ago1Java
Quarkus Quickstarts1,719
3 days ago155apache-2.0Java
Quarkus quickstart code
Spring Boot Shiro1,496
2 years ago3Java
Shiro基于SpringBoot +JWT搭建简单的restful服务
Spring Microservices1,369
a year ago7mitJava
Microservices using Spring Boot, Spring Cloud, Docker and Kubernetes
Alternatives To Spring Petclinic Rest
Select To Compare

Alternative Project Comparisons

REST version of Spring PetClinic Sample Application (spring-framework-petclinic extend )

Build Status

This backend version of the Spring Petclinic application only provides a REST API. There is no UI. The spring-petclinic-angular project is a Angular front-end application which consumes the REST API.

Understanding the Spring Petclinic application with a few diagrams

See the presentation of the Spring Petclinic Framework version

Petclinic ER Model

alt petclinic-ermodel

Running petclinic locally

With maven command line

git clone https://github.com/spring-petclinic/spring-petclinic-rest.git
cd spring-petclinic-rest
./mvnw spring-boot:run

With Docker

docker run -p 9966:9966 springcommunity/spring-petclinic-rest

You can then access petclinic here: http://localhost:9966/petclinic/

There are actuator health check and info routes as well:

OpenAPI REST API documentation presented here (after application start):

You can reach the swagger UI with this URL http://localhost:9966/petclinic/.

You then can get the Open API description reaching this URL localhost:9966/petclinic/v3/api-docs.

Screenshot of the Angular client


In case you find a bug/suggested improvement for Spring Petclinic

Our issue tracker is available here: https://github.com/spring-petclinic/spring-petclinic-rest/issues

Database configuration

In its default configuration, Petclinic uses an in-memory database (HSQLDB) which gets populated at startup with data. A similar setups is provided for MySql and PostgreSQL in case a persistent database configuration is needed. To run petclinic locally using persistent database, it is needed to change profile defined in application.properties file.

For MySQL database, it is needed to change param "hsqldb" to "mysql" in string


defined in application.properties file.

Before do this, would be good to check properties defined in application-mysql.properties file.

spring.datasource.url = jdbc:mysql://localhost:3306/petclinic?useUnicode=true

You may also start a MySql database with docker:

docker run --name mysql-petclinic -e MYSQL_ROOT_PASSWORD=petclinic -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8

For PostgeSQL database, it is needed to change param "hsqldb" to "postgresql" in string


defined in application.properties file.

Before do this, would be good to check properties defined in application-postgresql.properties file.


You may also start a Postgres database with docker:

docker run --name postgres-petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 -d postgres:9.6.0

API First Approach

This API is built following some API First approach principles.

It is specified through the OpenAPI. It is specified in this file.

Some of the required classes are generated during the build time. Here are the generated file types:

  • DTOs
  • API template interfaces specifying methods to override in the controllers

To see how to get them generated you can read the next chapter.

Generated code

Some of the required classes are generated during the build time using maven or any IDE (e.g., IntelliJ Idea or Eclipse).

All of these classes are generated into the target/generated-sources folder.

Here is a list of the generated packages and the corresponding tooling:

Package name Tool
org.springframework.samples.petclinic.mapper MapStruct
org.springframework.samples.petclinic.rest.dto OpenAPI Generator maven plugin

To get both, you have to run the following command:

mvn clean install

Security configuration

In its default configuration, Petclinic doesn't have authentication and authorization enabled.

Basic Authentication

In order to use the basic authentication functionality, turn in on from the application.properties file


This will secure all APIs and in order to access them, basic authentication is required. Apart from authentication, APIs also require authorization. This is done via roles that a user can have. The existing roles are listed below with the corresponding permissions

  • OWNER_ADMIN -> OwnerController, PetController, PetTypeController (getAllPetTypes and getPetType), VisitController
  • VET_ADMIN -> PetTypeController, SpecialityController, VetController
  • ADMIN -> UserController

There is an existing user with the username admin and password admin that has access to all APIs. In order to add a new user, please use the following API:

POST /api/users
    "username": "secondAdmin",
    "password": "password",
    "enabled": true,
    "roles": [
    	{ "name" : "OWNER_ADMIN" }

Working with Petclinic in Eclipse/STS


The following items should be installed in your system:

Note: when m2e is available, there is an m2 icon in Help -> About dialog. If m2e is not there, just follow the install process here: http://eclipse.org/m2e/download/


  1. In the command line
git clone https://github.com/spring-petclinic/spring-petclinic-rest.git
  1. Inside Eclipse
File -> Import -> Maven -> Existing Maven project

Looking for something in particular?

Layer Source
REST API controllers REST folder
Service ClinicServiceImpl.java
JDBC jdbc folder
JPA jpa folder
Spring Data JPA springdatajpa folder
Tests AbstractClinicServiceTests.java

Publishing a Docker image

This application uses Google Jib to build an optimized Docker image into the Docker Hub repository. The pom.xml has been configured to publish the image with a the springcommunity/spring-petclinic-restimage name.

Command line to run:

mvn compile jib:build -X -DjibSerialize=true -Djib.to.auth.username=xxx -Djib.to.auth.password=xxxxx

Interesting Spring Petclinic forks

The Spring Petclinic master branch in the main spring-projects GitHub org is the "canonical" implementation, currently based on Spring Boot and Thymeleaf.

This spring-petclinic-rest project is one of the several forks hosted in a special GitHub org: spring-petclinic. If you have a special interest in a different technology stack that could be used to implement the Pet Clinic then please join the community there.


The issue tracker is the preferred channel for bug reports, features requests and submitting pull requests.

For pull requests, editor preferences are available in the editor config for easy use in common text editors. Read more and download plugins at http://editorconfig.org.

Popular Spring Projects
Popular Rest Projects
Popular Frameworks Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Rest Api
Spring Mvc
Spring Data Jpa
Spring Framework
Spring Data