Spring framework

Un article de Wikipédia, l'encyclopédie libre.

Spring Framework
Dernière version 2.0.7 (le 1er octobre 2007)
Environnement Multiplate-forme
Type Java, J2EE, framework,
Licence licence Apache
Site web www.springframework.org

Spring est un framework open source J2EE pour les applications 3-tiers, dont il facilite le développement et les tests. En 2004, Rod Johnson et Juergen Holler ont écrit le livre « Expert One-on-One J2EE Design and Development » qui explique les raisons de la création de Spring.

Sommaire

[modifier] Conteneur léger

Spring est considéré comme un conteneur dit « léger ». La raison de ce nommage est très bien expliquée par Erick Gollot dans l'introduction du document [1] :

" SPRING est effectivement un conteneur dit « léger », c'est-à-dire une infrastructure similaire à un serveur d'application J2EE. Il prend donc en charge la création d'objets et la mise en relation d'objets par l'intermédiaire d'un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances entre ces objets. Le gros avantage par rapport aux serveurs d'application est qu'avec SPRING, vos classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs). C'est en ce sens que SPRING est qualifié de conteneur « léger ». "

Spring s'appuie principalement sur l'intégration de trois concepts clés :

  1. Inversion of Control (IoC) - inversion de contrôle ou injection de dépendance
  2. Aspect oriented programmation (AOP) - programmation orientée aspect
  3. Couche d'abstraction

La couche d'abstraction permet d'intégrer d'autres frameworks et bibliothèques avec une plus grande facilité. Cela se fait par l'apport ou non de couches d'abstraction spécifique à des frameworks particuliers. Il est ainsi possible d'intégrer un module d'envoi de mails en toute facilité.

Ce framework, grâce à sa couche d'abstraction, ne concurrence pas d'autres frameworks dans une couche spécifique d'un modèle architectural MVC mais s'avère un framework multi-couches pouvant s'insérer au niveau de toutes les couches ; modèle, vue et contrôleur. Ainsi il permet d'intégrer Hibernate ou ibatis pour la couche de persistance ou encore Struts pour la couche présentation.

[modifier] Composition de Spring

[modifier] Noyau de base

Le noyau de Spring est basé sur

  • une fabrique générique de beans (comme les JavaBeans)
  • un conteneur capable de stocker ces beans

De plus, le noyau de Spring permet l'injection de propriétés dans les beans rendant ainsi possible une inversion de contrôle.

Le principal avantage est de composer les beans de façon plus déclarative plutôt que de façon impérative dans le programme. On peut, par exemple, définir les beans par le biais de fichiers de configuration en XML.

[modifier] Exemple simpliste d'utilisation

Dans l'exemple ci-dessous en Java, on définit deux beans singletons. Le premier est un objet d'accès aux données pour des produits et on l'injecte dans le second qui est un gestionnaire de produits.

<beans>

  <bean id="daoProduitFich" class="DAOProduitFichier" scope="singleton">
    <constructor-arg type="java.lang.String">
      <value>mesproduits</value>
    </constructor-arg>
  </bean>

  <bean id="gestionnaireProduits" class="GestionnaireProduit" scope="singleton">
    <property name="daoProduit">
      <ref bean="daoProduitFich"/>
    </property>           
  </bean>
        
</beans>

Par exemple, lors d'une recherche, on demandera au conteneur Spring de fournir le gestionnaire de produits qui utilisera l'objet d'accès aux données.

[modifier] Compléments

Divers modules viennent en complément pour permettre l'intégration avec les autres bibliothèques et framework, notamment :

[modifier] Voir aussi

[modifier] Autres framework similaires

  • Azuki
  • Google Guice
  • Hivemind (logiciel)
  • PicoContainer
  • PocoCapsule

[modifier] Liens externes

[modifier] Références

  • Spring par la pratique par Julien Dubois, Jean-Philippe Retaillé, Thierry Templier, Eyrolles, 2006, 517 p., ISBN 2212117108