Spring MVC 2.5+ par l’exemple – Partie I

L'objet de ce billet est d'illustrer progressivement, pas à pas, par un exemple, simple mais pratique, la création d'une application web avec Spring MVC utilisant exclusivement (et abusivement) les annotations de Spring apparues depuis la version 2.5 ( ex. @Controller, @Autowired).
Ce billet s'inscrit dans une série d'articles nous permettant d'introduire Spring WebFlow 2.
Dans cette première partie de la série, nous mettons en place ensemble, pas à pas, l'environnement (Eclipse & Maven) et les dépendances nécessaires. Et nous terminons cette partie par écrire une classe JUnit pour tester le controller Spring MVC (seulement avec les annotations) afin de valider notre configuration et nous lançons le client navigateur afin de tester le déploiement sous jetty.
Nous enchaînons, dans un second billet, par expliciter les couches DAO (à base de jdbc template), service et l'approfondissement du controller Spring MVC qui consomme les méthodes de la couche service.
Pour ce faire, nous présentons progressivement l'exemple qui consiste à rechercher un client par son nom (obligatoire), le prénom(facultatif). Si un ou plusieurs clients existent, on affiche la liste puis lorsqu'un client est sélectionné, on affiche l'écran qui permet d'actualiser ses détails.
Si aucun client ne correspond à la recherche, on affiche un formulaire, pré-rempli, de création de ce client puis à la validation on lui renvoie l'écran de modification des détails.
Cet exemple nous servira pour introduire Spring WebFlow.
Vous pouvez télécharger les sources de la première partie springswf-partie1.

Tests JUnit4 combiné avec Spring et Spring MVC en mode transactionnel

Le titre de ce billet montre bien l'étendue des thèmes variés qui seront traités. Il a pour objectif d'illustrer, à l'aide d'un exemple assez complet et proche des cas réels, la mise en place des tests, en mode transactionnel, pour les différentes couches applicatives. Ainsi les vraies difficultés rencontrées par les développeurs seront évoquées.

Le billet traite JUnit4 enrichi avec les annotations de Spring 2.5+ et ses lanceurs pour exécuter facilement les tests.
Des illustrations en mode transactionnel vous sont proposées à la fin de ce billet.
Le framework JUnit est l'oeuvre conjointe de Kent Beck (créateur de XP) et Erich Gamma (auteur des Design Patterns).
Avec la version 4, JUnit tente de rattraper son retard sur Testng tout en gardant la compatibilité avec JUnit3x ainsi qu'une parfaite intégration aux éditeurs Eclipse, Netbeans, ...

Avec les lanceurs de spring, les tests deviennent plus attrayants. Spring encourage ainsi à adopter l'approche TDD "Test Driven Design" ou "Test-First Developpment".
Notez que le jdk5+ est nécessaire pour certaines parties de code Java. Les commentaires dans le code java le mentionnent au bon endroit.

Introduction à Spring MVC

Dans la guerre furieuse des frameworks MVC il y en a un qui se démarque par sa simplicité, sa facilité de prise en main et sa parfaite intégration à Spring : Spring MVC.

Certes Spring MVC n'est pas un framework événementiel comme pourraient l'être jsf, wicket, tapestry ou struts 2. Mais il possède de nombreux points d'extensions et utilisé avec Spring Web Flow il devient un framework très puissant.

Je vous propose ici une introduction des plus simples qui va consister à afficher une page Hello Spring MVC avec le framework Spring MVC.

Puis nous enrichirons progressivement notre application exemple avec de nouveaux tutoriels pour aboutir à l'utilisation de Spring Web Flow avec la gestion d'une transaction longue Hibernate.