VisitRepo findByPetId: 16 lines of code findByPetId: 6 (short) lines of code findByPetId: 0 lines (interface declaration is enough based on naming conventions) In order to select which implementation should be used, select the Appropriate bean profile inside web.xml (jdbc, jpa or spring-data-jpa)
(JPA) jdbc Spring Data JPA Inside web.xml <context-param> <param-name> spring.profiles.active </param-name> <param-value> jdbc </param-value> </context-param> Inside JUnit tests @ContextConfiguration(locations = …) @RunWith(SpringJUnit4ClassRunner.class) @ActiveProfiles("jdbc") public class JdbcOwnerRepositoryTests …{} No configuration needed in case you wish to use th default profile (JPA)
throw a RuntimeException (typically DataAccessException) Transaction is rolled back in case of a RuntimeException (exception is still propagated to PetController) Exception is not handled there It is propagated. SimpleMapping ExcepGonResolver Declared in mvc-core-config.xml Based on the configuration used in petclinic: • Logs the exception stacktrace • Forwards to WEB-INF/jsp/exception.jsp • Exception logged as a comment inside exception.jsp
@Repository public class JpaVetRepositoryImpl @Repository public class JpaVisitRepositoryImpl @Aspect public class CallMonitoringAspect { @Around("within(@org.springframework.stereotype.Repository *)") public Object invoke(…) { … } } Adds monitoring Adds monitoring Adds monitoring To understand further how AOP works in Spring: http://blog.springsource.org/2012/05/23/understanding-proxy-usage-in-spring/
not resolve any view on its own Delegates to other view resolvers BeanNameVR Atom and XML InternalResourceVR Default viewClass: JstlView (used for JSP files) vets.html owners.html vets.xml pets/9/visits.atom mvc-view-config.xml
Dubois on how to “improve performance of the Spring-‐Petclinic applicaGon” – h/p://blog.ippon.fr/2013/03/11/ • Dandelion: clickable/sortable datatatables inside Spring-‐ Petclinic – h/p://dandelion.github.io/blog/2013/04/24/IntegraGng-‐Dandelion-‐ DataTables-‐in-‐the-‐Spring-‐Petclinic-‐app 20