Introduction
Spring est un framework open-source destiné aux applications J2EE pour les applications 3-tiers. Ce framework est très apprécié par la communauté Java pour sa souplesse d’utilisation et sa modularité. En effet, il n’est pas nécessaire d’implémenter la totalité de Spring pour pouvoir utiliser Spring, et c’est ce qui en fait son principal point fort, on utilise que ce qu’on a besoin.
Les modules de Spring
Spring Core
Il s’agit du module principal (le seul obligatoire) qui permet d’intégrer tous les autres modules par la suite. Ce module se charge des dépendances entre tous les beans. Il s’agit en fait d’une implémentation du concept d’injection de dépendance. Le concept d’injection de dépendance est facile à comprendre avec la pratique mais je vais essayer de faire une explication théorique.
Supposons qu’un objet de classe MaClasseA ait besoin de faire des appels à des méthodes de l’objet classe MaClasseB, il faut donc :
- Soit que toutes les méthodes de la classe MaClasseB soient déclarées en statiques et appelées par l’instruction suivante : MaClasseB.maMethode(). Dans ce cas, il s’agit d’un développement procédural. On ne peut pas avoir plusieurs objets MaClasseA qui appellent chacun l’objet instancié MaClasseB associé.
- Soit transmettre à l’objet de type MaClasseA l’instance de l’objet MaClasseB afin qu’il puisse appeler correctement la méthode sur l’objet instancié et non pas la classe.
Dans les 2 cas, le processus est compliqué et il a le terrible inconvénient de laisser le nom de l’objet en dur dans la classe. En supposant maintenant que MaClasseB est en fait DaoOracle, et que du jour au lendemain, on souhaite faire appel à un DaoMySQL, il faut aller modifier chaque appel dans le code à l’ancienne classe pour le remplacer par la nouvelle. Facile pour des petits projets, mais c’est complètement impensable pour des projets de plusieurs centaines de classes. La solution apportée par le concept d’injection de dépendance et bien évidemment par l’implémentation fournit par Spring Core, c’est de se séparer de cette dépendance aux noms des objets en dur dans le code. Dans le code, l’objet de type MaClasseA sait qu’il doit appeler les méthodes d’une interface (il s’agit bien là des interfaces Java) qu’on pourrait appeler DaoSGBD. Le framework Spring se charge à l’exécution (selon la configuration) d’indiquer à l’objet de monObjetA quel est l’implémentation qu’il doit appeler (DaoOracle ou DaoMySQL). Pour changer, il n’est donc plus nécessaire d’aller modifier l’intégralité du code mais seulement le paramétrage dans la configuration. L’exemple fournit dans ce tutoriel sera assez explicite. C’est pourquoi, je vous invite à continuer ce document pour ensuite éventuellement revenir sur ce passage
Spring ORM
Ce module permet de mettre en place la persistance des données au sein de votre application. Il repose sur l’intégration de framework comme Hibernate.
Spring DAO
Ce module fournit un ensemble de fonction destiné à simplifier la gestion des accès aux données via JDBC.
Spring Web et MVC
Ces deux modules permettent d’utiliser Spring avec une application web et d’implémenter une architecture MVC.
Autres
Le module Spring AOP est destiné principalement à la Programmation Orientée Aspect(AOP) qui n’est pas nécessaire de connaître pour utiliser Spring. Les autres modules sont moins utilisés et répondent à des besoins plus spécifiques.