If you are interested on the migration of this project to Quarkus , check the quarkus
branch in this project.
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.
See the presentation of the Spring Petclinic Framework version
git clone https://github.com/spring-petclinic/spring-petclinic-rest.git
cd spring-petclinic-rest
./mvnw spring-boot:run
docker run -p 9966:9966 springcommunity/spring-petclinic-rest
You can then access petclinic here: http://localhost:9966/petclinic/
http://localhost:9966/petclinic/swagger-ui.html
Our issue tracker is available here: https://github.com/spring-petclinic/spring-petclinic-rest/issues
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
spring.profiles.active=hsqldb,spring-data-jpa
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
spring.datasource.username=pc
spring.datasource.password=petclinic
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database=MYSQL
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=none
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.profiles.active=hsqldb,spring-data-jpa
defined in application.properties file.
Before do this, would be good to check properties defined in application-postgresql.properties file.
spring.datasource.url=jdbc:postgresql://localhost:5432/petclinic
spring.datasource.username=postgres
spring.datasource.password=petclinic
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database=POSTGRESQL
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
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
In its default configuration, Petclinic doesn't have authentication and authorization enabled.
In order to use the basic authentication functionality, turn in on from the application.properties file
petclinic.security.enable=true
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" }
]
}
The following items should be installed in your system:
- Maven 3 (https://maven.apache.org/install.html)
- git command line tool (https://help.github.com/articles/set-up-git)
- Eclipse with the m2e plugin (m2e is installed by default when using the STS (http://www.springsource.org/sts) distribution of Eclipse)
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/
- In the command line
git clone https://github.com/spring-petclinic/spring-petclinic-rest.git
- Inside Eclipse
File -> Import -> Maven -> Existing Maven project
Layer | Source |
---|---|
REST API controllers | REST folder |
Service | ClinicServiceImpl.java |
JDBC | jdbc folder |
JPA | jpa folder |
Spring Data JPA | springdatajpa folder |
Tests | AbstractClinicServiceTests.java |
- Upgraded to 2.3.0 as it is required to build with GraalVM
- Added javax.validation dependency as it no longer comes with SB
- Official Doc on Native Image builder
- Steps followed : CodeCentric Blog
- Preparing Spring Boot to be Graal Native Image-friendly
- Relocating Annotation classpath scanning from runtime to build time
- Disabling usage of GCLIB proxies
- Detecting autoconfiguration
- Getting Spring Graal @AutomaticFeature
- Setting start-class element in pom.xml
- Preparing configuration variables for native-image command
- Building the app, expanding the fat JAR & configuring the classpath
- Crafting the native-image command
- Preparing Spring Boot to be Graal Native Image-friendly
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-rest
image name.
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.