Introduction
- Bonnes pratiques : séparation des responsabilités, DRY, KISS, classes agnostiques, POJO.
- Principe du découpage en couches : accès aux données, métier et Web.
- Rôle des Spring, Hibernate, Jersey et AngularJS.
- Librairies complémentaires : logging avec slf4j et logback, tests unitaires avec JUnit, les mocks.
- Le principe des "Single Page Application".
Environnement de travail
- L'environnement Eclipse.
- Le plug-in Spring Tool Suite (STS).
- Les dépendances Maven.
Travaux pratiques
Installation de l'IDE et du plug-in Spring Tool Suite.
Mise en place d'une architecture multicouche avec Spring
- Le découpage en couches, l'approche POJO.
- La gestion de l'état.
- L'injection de dépendances.
- Les interceptions.
- Les invocations planifiées.
- La supervision avec JMX.
- La configuration du conteneur (annotations, par XML).
- Le test des beans managés.
Travaux pratiques
Mise en place d'une application multicouche, utilisation de Spring comme factory pour gérer nos objets (cycle de vie, injection de dépendance...).
Accès aux données avec Hibernate et JPA
- Le mapping objet relationnel (XML, annotations).
- Le Lazy Loading.
- L'API EntityManagerFactory et EntityManager.
- JPA-QL, API Criteria, MetaModel, EntityGraph.
- La gestion des transactions, le lien entre couplage JPA et JTA.
Travaux pratiques
Mise en place d'entités persistantes. Gestion Spring du cycle de l'entityManager JPA, usage du moniteur transactionnel de Spring et des annotations JTA.
Web Services REST, API JAX-RS vs Spring MVC
- Qu'est-ce qu'une URI ?
- Rappels HTTP : les verbes (GET, PUT...), les retours, les contentType, les en-têtes, la gestion du cache.
- CORS : Cross Origin Shared Resource.
- HATEOAS.
- Mise en place de services REST (JAX-RS et Jersey).
- Comparaison avec Spring MVC.
Travaux pratiques
Développement d'une API REST exposant les ressources de l'exercice précédent.
Client HTML/JavaScript avec Angular
- L'avantage des IHM "côté client".
- L'écueil que représente la manipulation du DOM.
- L'approche proposée par Angular.
- Isomorphic JavaScript pour le rendu côté serveur.
Travaux pratiques
Création d'un client HTML/JavaScript avec Angular consommant l'API REST développée précédemment.