Spring : framework J2EE pour applications Web et applications de bureau

Fiche PLUME
  • Statut de la fiche : Logiciel : En MAJ
  • Création ou MAJ importante : 09/07/2010
  • Correction mineure : 27/10/2011
  • Auteur : Francois Jannin - DSI INP Toulouse (INP Toulouse)
  • Responsable thématique : Pascal Dayre (IRIT)
Mots clés
Description
Fonctionnalités générales

Spring est un framework qui facilite le développement et les tests d'applications pour la plateforme J2EE.
Dit "conteneur léger", il permet d'agencer par simple configuration les objets d'une application et leurs dépendances, mais contrairement à J2EE et EJB (avant EJB3), sans déployer un fatras d'interfaces et autres artéfacts conceptuels.
Il offre la possibilité de configurer des architectures d'applications web et d'applications d'entreprise en assurant une séparation des couches persistance, métier et présentation.
MVC2 est un modèle proposé dans Spring en tant que module propre, ou bien on peut interfacer la partie Controleur/Vue avec d'autres API telles que JSF ou Struts.

Spring repose sur quelques principes dominants :

  • la notion d'IoC (Inversion of Control) qui permet de minimiser l'adhérence du code au framework (le fameux "Don't call us, we will call you"),
  • l'injection de dépendance (Dependency Injection) qui offre une grande souplesse dans l'architecture en limitant les dépendances codées en dur, et donc idéal pour élaborer facilement toute sorte de tests unitaires,
  • les techniques AOP (Aspect Oriented Programming) pour les domaines nécessitant beaucoup de transversalité comme la sécurité, les transactions, les caches.

Enfin, son côté "glue d'application" lui est fourni par sa couche d'abstraction lui permettant d'intégrer les frameworks plus spécialisés de façon transparente et homogène, à travers un motif unique et unifié de Bean Factory.

Sa mise en oeuvre fait ainsi office de glue pour intégrer les différentes parties d'une application développées en toute indépendance. Ce sont des fichiers XML de configuration de l'application qui vont instanciés des Bean légers (POJO) et les mettre en relation.
Ainsi, il n'y a plus d'interdépendance entre les parties par des initialisations. La reconfiguration se fait par de nouveaux fichiers de config XML.
Autre atout de ce framework par rapport à Seam par exemple, Spring est non-intrusif, c'est-à- dire qu'il n'y a pas de dépendances requises au niveau du code (pas d'import de classes Spring), ce qui rend le code complétement non-adhérent à Spring.

Autres fonctionnalités

Intégration d'API/ Frameworks
Il est possible d'intégrer une API qui ne l'aurait pas encore été (les plus utilisées le sont déjà), il suffit pour cela d'implémenter une BeanFactory qui va se charger de rendre cette API parfaitement intégrée à Spring, et rejoindre la communauté déjà impressionnante des Spring Modules.

Interopérabilité

Java, tout autre Framework (Hibernate, Strut, ...) intégré dans les Spring Modules

OSGI

WebLogic

ZK (fiche PLUME)

Contexte d'utilisation dans mon laboratoire/service

Ce framework est utilisé depuis plusieurs années dans le cadre du Consortium ESUP-Portail par les développeurs pour réaliser des portlets, notamment via ESUP-COMMONS qui est un socle de developpement de portlet basé sur Spring.
Il est apprécié pour les facilités offertes en terme d'evolutivité, d'élaboration de tests, de souplesse d'architecture, et surtout de mise en commun et capitalisation des techniques de développement.
Il est également utilisé dans le cadre du projet ORI-OAI, pour tous les modules qui le composent, et apprécié pour les mêmes raisons.

Limitations, difficultés, fonctionnalités importantes non couvertes

Il ne faut pas avoir le vertige quand on regarde les piles d'appels, l'utilisation abusive d'AOP amenant rapidement un nombre d'indirections abyssale, point souvent critique en Java.

Il s'agit d'un framework assez complet et modulaire. On peut avoir du mal à savoir par quel bout le prendre, mais les nombreux tutoriels existants aident à s'orienter de façon assez pragmatique.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré
Plates-formes

Multi-plateforme (java)

Logiciels connexes

Spring distribue une version d'Eclipse préconfigurée pour le développement de Spring. Le produit est nommé Springsource Tool Suite (STS) téléchargeable à http://www.springsource.com/products/springsource-....
Il existe aussi un module Spring pour l'IDE Netbeans (http://sourceforge.net/projects/spring-netbeans/).
Le framewok est cependant utilisable par n'importe quel IDE permettant de développer du java.

Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

Société SpringSource (récemment achetée par VMWare).

Eléments de pérennité

Logiciel Open Source : pourrait être poursuivi facilement si la société SpringSource disparaît.

Références d'utilisateurs institutionnels

ESUP (portail web des universités françaises)

ORI-OAI (outil de référencement et d'indexation dedié à l'enseignement supérieur)

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur
Contributions