All Projects → spring-petclinic → Spring Framework Petclinic

spring-petclinic / Spring Framework Petclinic

Licence: apache-2.0
A Spring Framework application based on JSP, Spring MVC, Spring Data JPA, Hibernate and JDBC

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Spring Framework Petclinic

Spring Petclinic Rest
REST version of the Spring Petclinic sample application
Stars: ✭ 257 (+2.39%)
Mutual labels:  hibernate, spring-data-jpa, spring, spring-mvc, springframework, sample
Spring Boot Mysql Rest Api Tutorial
Building a Restful CRUD API using Spring Boot, Mysql, JPA and Hibernate
Stars: ✭ 279 (+11.16%)
Mutual labels:  hibernate, jpa, spring-data-jpa, mysql, spring, spring-mvc
Angularjs Springmvc Sample Boot
A RESTful sample using Spring Boot, Spring MVC, Spring Data and Angular/Bootstrap.
Stars: ✭ 309 (+23.11%)
Mutual labels:  hibernate, jpa, spring-data-jpa, spring, spring-mvc
Springboard
Spring Boot based production grade starter kit.
Stars: ✭ 59 (-76.49%)
Mutual labels:  spring-data-jpa, spring, spring-mvc, springframework, maven
Curso Sistemas Web Com Spring Javascript Bootstrap
Stars: ✭ 74 (-70.52%)
Mutual labels:  hibernate, jpa, spring, spring-mvc, tomcat
Dhis2 Core
DHIS2 Core. Written in Java. Contains the service layer and Web API.
Stars: ✭ 199 (-20.72%)
Mutual labels:  hibernate, spring, spring-mvc, maven
Spring Boot Enterprise Application Development
Spring Boot Enterprise Application Development.《Spring Boot 企业级应用开发实战》
Stars: ✭ 261 (+3.98%)
Mutual labels:  hibernate, spring-data-jpa, mysql, spring-mvc
Nimrod
Nimrod - 基于 Spring Boot 构建 的 Java Web 平台企业级单体应用快速开发框架,适合中小型项目的应用和开发。所采用的技术栈包括 Spring Boot、Spring、Spring Web MVC、MyBatis、Thymeleaf 等,遵守阿里巴巴 Java 开发规约,帮助养成良好的编码习惯。整体采用 RBAC ( Role-Based Access Control ,基于角色的访问控制),具有严格的权限控制模块,支持系统与模块分离开发。最后希望这个项目能够对你有所帮助。Nimrod 开发交流群:547252502(QQ 群)
Stars: ✭ 125 (-50.2%)
Mutual labels:  mysql, spring, maven, tomcat
vogon-java
Vogon - A simple personal finance tracker using Spring Boot and AngularJS
Stars: ✭ 16 (-93.63%)
Mutual labels:  jpa, hibernate, spring-mvc, spring-data-jpa
Perfect Ssm
🍇更完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis)
Stars: ✭ 606 (+141.43%)
Mutual labels:  mysql, spring, spring-mvc, maven
Springbootunity
rabbitmq、redis、scheduled、socket、mongodb、Swagger2、spring data jpa、Thymeleaf、freemarker etc. (muti module spring boot project) (with spring boot framework,different bussiness scence with different technology。)
Stars: ✭ 845 (+236.65%)
Mutual labels:  hibernate, mysql, spring, spring-mvc
Ssm Demo
🍌Spring+SpringMVC+Mybatis+easyUI实现简单的后台管理系统
Stars: ✭ 1,639 (+552.99%)
Mutual labels:  spring, spring-mvc, springframework, maven
Spring Boot Demo
Spring Boot & Spring Cloud & Spring Security Demo Case(Spring学习示例实战项目)
Stars: ✭ 255 (+1.59%)
Mutual labels:  jpa, mysql, spring, spring-mvc
BusinessInfrastructurePlatformGroupVersion
A java web project based on Spring Boot using MySQL, Spring MVC, Hibernate, Spring Data JPA, Query DSL, Lombok, Logback, etc.
Stars: ✭ 90 (-64.14%)
Mutual labels:  hibernate, springframework, spring-mvc, spring-data-jpa
Tianti
java轻量级的CMS解决方案-天梯。天梯是一个用java相关技术搭建的后台CMS解决方案,用户可以结合自身业务进行相应扩展,同时提供了针对dao、service等的代码生成工具。技术选型:Spring Data JPA、Hibernate、Shiro、 Spring MVC、Layer、Mysql等。
Stars: ✭ 1,053 (+319.52%)
Mutual labels:  hibernate, spring-data-jpa, mysql, spring-mvc
Kotlin Spring Boot Jpa Rest Api Demo
Build a Restful API with Kotlin, Spring Boot, Mysql, Jpa and Hibernate
Stars: ✭ 67 (-73.31%)
Mutual labels:  hibernate, jpa, mysql, spring-mvc
Spring-Boot-2
Spring Boot 2.x examples
Stars: ✭ 33 (-86.85%)
Mutual labels:  jpa, hibernate, spring-mvc, spring-data-jpa
Spring Mvc Thymeleaf Crud
Spring MVC CRUD Application with Thymeleaf, HTML5, CSS3 and Bootstrap
Stars: ✭ 14 (-94.42%)
Mutual labels:  spring-data-jpa, spring, spring-mvc, springframework
Spring Cloud Flycloud
🔥🔥🔥FlyClould 微服务实战项目框架,在该框架中,包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,对于后台服务框架的搭建有很大的参考价值,大家可以参考甚至稍加修改可以直接应用于自己的实际的项目开发中,该项目没有采用Maven进行项目构建,Maven通过xml进行依赖管理,导致整个配置文件太过臃肿,另外灵活性也不是很强,所以我采用Gradle进行项目构建和依赖管理,在FlyTour项目中我们见证了Gradle的强大,通过简单的一些配置就可以轻松的实现组件化的功能。该项目共有11个Module工程。其中10个位微服务工程,这10个微服务工程构成了一个完整的微服务系统,微服务系统包含了8个基础服务,提供了一整套微服务治理功能,他们分别是配置中心module_c…
Stars: ✭ 1,514 (+503.19%)
Mutual labels:  spring-data-jpa, spring, spring-mvc, springframework
Spring Boot 2 Oauth2 Authorization Jwt
Spring Boot 2 OAuth2 JWT Authorization server implementation with Database for Users and Clients (JPA, Hibernate, MySQL)
Stars: ✭ 115 (-54.18%)
Mutual labels:  hibernate, jpa, mysql, spring

Spring PetClinic Sample Application

Build Status Quality Gate Status Coverage

Approved by the Spring team, this repo is a fork of the spring-projects/spring-petclinic. It allows the Spring community to maintain a Petclinic version with a plain old Spring Framework configuration and with a 3-layer architecture (i.e. presentation --> service --> repository). The "canonical" implementation is now based on Spring Boot, Thymeleaf and aggregate-oriented domain.

Understanding the Spring Petclinic application with a few diagrams

See the presentation here (2017 update)

Running petclinic locally

With Maven command line

git clone https://github.com/spring-petclinic/spring-framework-petclinic.git
cd spring-framework-petclinic
./mvnw jetty:run-war
# For Windows : ./mvnw.cmd jetty:run-war

With Docker

docker run -p 8080:8080 springcommunity/spring-framework-petclinic

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

petclinic-screenshot

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

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

Database configuration

In its default configuration, Petclinic uses an in-memory database (H2) 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 run with profile defined in main pom.xml file.

For MySQL database, it is needed to run with 'MySQL' profile defined in main pom.xml file.

./mvnw jetty:run-war -P MySQL

Before do this, would be good to check properties defined in MySQL profile inside pom.xml file.

<properties>
    <jpa.database>MYSQL</jpa.database>
    <jdbc.driverClassName>com.mysql.cj.jdbc.Driver</jdbc.driverClassName>
    <jdbc.url>jdbc:mysql://localhost:3306/petclinic?useUnicode=true</jdbc.url>
    <jdbc.username>petclinic</jdbc.username>
    <jdbc.password>petclinic</jdbc.password>
</properties>

You could start MySQL locally with whatever installer works for your OS, or with docker:

docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8

For PostgreSQL database, it is needed to run with 'PostgreSQL' profile defined in main pom.xml file.

./mvnw jetty:run-war -P PostgreSQL

Before do this, would be good to check properties defined in PostgreSQL profile inside pom.xml file.

<properties>
    <jpa.database>POSTGRESQL</jpa.database>
    <jdbc.driverClassName>org.postgresql.Driver</jdbc.driverClassName>
    <jdbc.url>jdbc:postgresql://localhost:5432/petclinic</jdbc.url>
    <jdbc.username>postgres</jdbc.username>
    <jdbc.password>petclinic</jdbc.password>
</properties>

You could also start PostgreSQL locally with whatever installer works for your OS, or with docker:

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

Persistence layer choice

The persistence layer have 3 available implementations: JPA (default), JDBC and Spring Data JPA. The default JPA implementation could be changed by using a Spring profile: jdbc, spring-data-jpa and jpa.
As an example, you may use the -Dspring.profiles.active=jdbc VM options to start the application with the JDBC implementation.

./mvnw jetty:run-war -Dspring.profiles.active=jdbc

Working with Petclinic in your IDE

Prerequisites

The following items should be installed in your system:

Steps:

  1. On the command line
git clone https://github.com/spring-petclinic/spring-framework-petclinic.git
  1. Inside Eclipse or STS
File -> Import -> Maven -> Existing Maven project

Then either build on the command line ./mvnw generate-resources or using the Eclipse launcher (right click on project and Run As -> Maven install) to generate the CSS. Configure a Jetty or a Tomcat web container then deploy the spring-petclinic.war file.

  1. Inside IntelliJ IDEA

In the main menu, select File > Open and select the Petclinic pom.xml. Click on the Open button.

CSS files are generated from the Maven build. You can either build them on the command line ./mvnw generate-resources or right click on the spring-petclinic project then Maven -> Generates sources and Update Folders.

Go to the Run -> Edit Configuration then configure a Tomcat or a Jetty web container. Deploy the spring-petclinic.war file. Run the application by clicking on the Run icon.

  1. Navigate to Petclinic

Visit http://localhost:8080 in your browser.

Working with Petclinic in IntelliJ IDEA

prerequisites

The following items should be installed in your system:

Looking for something in particular?

Java Config
Java config branch Petclinic uses XML configuration by default. In case you'd like to use Java Config instead, there is a Java Config branch available here
Inside the 'Web' layer Files
Spring MVC - XML integration mvc-view-config.xml
Spring MVC - ContentNegotiatingViewResolver mvc-view-config.xml
JSP custom tags WEB-INF/tags, createOrUpdateOwnerForm.jsp
JavaScript dependencies JavaScript libraries are declared as webjars in the pom.xml
Static resources config Resource mapping in Spring configuration
Static resources usage htmlHeader.tag, footer.tag
Thymeleaf In the late 2016, the original Spring Petclinic has moved from JSP to Thymeleaf.
'Service' and 'Repository' layers Files
Transactions business-config.xml, ClinicServiceImpl.java
Cache tools-config.xml, ClinicServiceImpl.java
Bean Profiles business-config.xml, ClinicServiceJdbcTests.java, PetclinicInitializer.java
JDBC business-config.xml, jdbc folder
JPA business-config.xml, jpa folder
Spring Data JPA business-config.xml, 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-framework-petclinic image name.

Jib containerizes this WAR project by using the distroless Jetty as a base image.

Build and push the container image of Petclinic to the Docker Hub registry:

mvn jib:build

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-framework-petclinic 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.

Interaction with other open source projects

One of the best parts about working on the Spring Petclinic application is that we have the opportunity to work in direct contact with many Open Source projects. We found some bugs/suggested improvements on various topics such as Spring, Spring Data, Bean Validation and even Eclipse! In many cases, they've been fixed/implemented in just a few days. Here is a list of them:

Name Issue
Spring JDBC: simplify usage of NamedParameterJdbcTemplate SPR-10256 and SPR-10257
Bean Validation / Hibernate Validator: simplify Maven dependencies and backward compatibility HV-790 and HV-792
Spring Data: provide more flexibility when working with JPQL queries DATAJPA-292
Dandelion: improves the DandelionFilter for Jetty support 113

Contributing

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].