Awesome Open Source
Awesome Open Source

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
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/

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


Screenshot of the Angular client


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

Our issue tracker is available here:

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 file.

For MySQL database, it is needed to change param "hsqldb" to "mysql" in string,spring-data-jpa

defined in file.

Before do this, would be good to check properties defined in 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,spring-data-jpa

defined in file.

Before do this, would be good to check properties defined in 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

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 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:


  1. In the command line
git clone
  1. Inside Eclipse
File -> Import -> Maven -> Existing Maven project

Looking for something in particular?

Layer Source
REST API controllers REST folder
JDBC jdbc folder
JPA jpa folder
Spring Data JPA springdatajpa folder

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.

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

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (31,284
rest-api (547
spring (515
rest (487
swagger (366
spring-mvc (120
sample (109
jdbc (86
hibernate (85
spring-data-jpa (57
spring-data (47
mysql-database (43
jackson (37
springframework (23