# Spring PetClinic Sample Application [](https://travis-ci.org/spring-projects/spring-petclinic/) ## Understanding the Spring Petclinic application with a few diagrams See the presentation here ## Running petclinic locally ``` git clone https://github.com/spring-projects/spring-petclinic.git cd spring-petclinic ./mvnw tomcat7:run ``` You can then access petclinic here: http://localhost:9966/petclinic/ ## In case you find a bug/suggested improvement for Spring Petclinic Our issue tracker is available here: https://github.com/spring-projects/spring-petclinic/issues ## Database configuration In its default configuration, Petclinic uses an in-memory database (HSQLDB) which gets populated at startup with data. A similar setup is provided for MySql in case a persistent database configuration is needed. Note that whenever the database type is changed, the data-access.properties file needs to be updated and the mysql-connector-java artifact from the pom.xml needs to be uncommented. You may start a MySql database with docker: ``` docker run -e MYSQL_ROOT_PASSWORD=petclinic -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:5.7.8 ``` ## Working with Petclinic in Eclipse/STS ### prerequisites The following items should be installed in your system: * Maven 3 (http://www.sonatype.com/books/mvnref-book/reference/installation.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/ ### Steps: 1) In the command line ``` git clone https://github.com/spring-projects/spring-petclinic.git ``` 2) Inside Eclipse ``` File -> Import -> Maven -> Existing Maven project ``` ## 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. Thanks to Antoine Rey for his contribution. |
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 |
Bower |
bower-install maven profile declaration inside pom.xml JavaScript libraries are defined by the manifest file bower.json Bower configuration using JSON Resource mapping in Spring configuration sample usage in JSP |
Dandelion-datatables | ownersList.jsp vetList.jsp web.xml datatables.properties |
Thymeleaf branch | See here |
Branch using GemFire and Spring Data GemFire instead of ehcache (thanks Bijoy Choudhury) | See here |
'Service' and 'Repository' layers | Files |
---|---|
Transactions | business-config.xml ClinicServiceImpl.java |
Cache | tools-config.xml ClinicServiceImpl.java |
Bean Profiles | business-config.xml ClinicServiceJdbcTests.java web.xml |
JdbcTemplate | business-config.xml jdbc folder |
JPA | business-config.xml jpa folder |
Spring Data JPA | business-config.xml springdatajpa folder |
Others | Files |
---|---|
Gradle branch | See here |
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 |
Eclipse: validation bug when working with .tag/.tagx files (has only been fixed for Eclipse 4.3 (Kepler)). See here for more details. | STS-3294 |