Partie 12 : Le développement d'applications avec Spring 82. Spring Core Imprimer Sommaire Consulter avec table des matières
Développons en Java   v 2.10  
Copyright (C) 1999-2016 .  

 

81. Spring

 

chapitre 8 1

 

 

Niveau : niveau 4 Supérieur 

 

Spring est un socle pour le développement d'applications, principalement d'entreprises mais pas obligatoirement. Il fournit de nombreuses fonctionnalités parfois redondantes ou qui peuvent être configurées ou utilisées de plusieurs manières : ceci laisse le choix au développeur d'utiliser la solution qui lui convient le mieux et/ou qui répond aux besoins.

Spring est ainsi un des frameworks les plus répandus dans le monde Java : sa popularité a grandie au profit de la complexité de Java EE notamment pour ses versions antérieures à la version 5 mais aussi grâce à la qualité et la richesse des fonctionnalités qu'il propose :

Spring était un framework applicatif à ses débuts mais maintenant c'est une véritable plate-forme composée du framework Spring, de projets qui couvrent de nombreux besoins et de middlewares.

Spring permet une grande flexibilité dans les fonctionnalités et les projets utilisés dans une application. Il est par exemple possible d'utiliser le conteneur Spring pour gérer de façon basique les beans sans utiliser l'AOP. Par contre, certains projets et certaines fonctionnalités ont des dépendances avec d'autres projets.

Spring est associé à la notion de conteneur léger (lightweight container) par opposition aux conteneurs lourds que sont les serveurs d'applications Java EE.

Le site officiel du framework Spring est à l'url http://www.springframework.org

Ce chapitre contient plusieurs sections :

 

81.1. Le but et les fonctionnalités proposées par Spring

Le but de Spring est de faciliter et de rendre productif le développement d'applications, particulièrement les applications d'entreprises.

Spring propose de nombreuses fonctionnalités de base pour le développement d'applications :

Spring favorise l'intégration avec de nombreux autres frameworks notamment ceux de type ORM ou web.

Une application typique utilisant Spring est généralement structurée en trois couches :

Spring est utilisé pour créer et injecter les objets requis de la couche précédente.

Les objets du domaine sont utilisés dans les échanges entre ces couches. Les objets du domaine ne sont pas créés ni gérés par Spring : ils sont instanciés directement en utilisant l'opérateur new. Il peut donc exister de nombreuses instances uniques des objets du domaine.

 

81.2. L'historique de Spring

Le framework Spring a été initialement développé par Rod Johnson et Juergen Holler.

Spring a connu plusieurs versions :

Spring 1.0 implémente les fonctionnalités de base du framework :

Spring 1.2

Spring 2.0 apporte de nombreuses nouveautés :

Spring 2.5 apporte de nombreuses nouveautés pour faciliter sa configuration :

Spring 3.0 apporte de nombreuses nouveautés pour sa configuration et les fonctionnalités proposées :

Spring 3.1 :

 

81.3. Spring Framework

Spring Framework contient toutes les fonctionnalités de base pour développer des applications.

Le coeur de Spring Framework 3.0 est composé d'un ensemble d'une vingtaine de modules qui sont regroupés en plusieurs parties :

La partie Spring Core Container contient plusieurs modules :

La partie AOP and Instrumentation contient plusieurs parties :

La partie Data Acces/Integration contient plusieurs modules

La partie Web contient plusieurs modules :

La partie Test contient un seul module :

Ces modules sont utilisés comme base pour le développement d'applications.

 

81.4. Les projets du portfolio Spring

Spring propose aussi un ensemble très complet de modules additionnels qui ne cesse de s'enrichir pour faciliter la mise en oeuvre de certaines fonctionnalités dans les applications.

Ainsi, Spring est un portfolio de nombreux projets qui couvrent un grand nombre de besoins. Tous ces projets reposent sur le coeur de Spring : Spring Core.

Voici une liste non exhaustive de ces projets :

Plusieurs projets ne sont plus maintenus :

Tous les projets de Spring sont open source et sont, pour la plupart, diffusés sous licence Apache Version 2.0.

 

81.5. Les avantages et les inconvénients de Spring

Spring est un framework open source majoritairement développé par SpringSource mais il n'est pas standardisé par le JCP.

Il est très largement utilisé dans le monde Java, ce qui en fait un standard de facto et constitue une certaine garantie sur la pérennité du framework.

Spring propose une très bonne intégration avec des frameworks open source (Struts, Hibernate, ...) ou des standards de Java (Servlets, JMS, JDO, ...)

Toutes les fonctionnalités de Spring peuvent s'utiliser dans un serveur Java EE et pour la plupart dans un simple conteneur web ou une application standalone.

Les fonctionnalités offertes par Spring sont très nombreuses et les sujets couverts ne cessent d'augmenter au fur et mesure des nouvelles versions et des nouveaux projets ajoutés au portfolio.

La documentation de Spring est complète et régulièrement mise à jour lors de la diffusion de chaque nouvelle version.

La mise en oeuvre de Spring n'est pas toujours aisée car il existe généralement plusieurs solutions pour mettre en oeuvre une fonctionnalité : par exemple, généralement avec Spring 3.0, une fonctionnalité est utilisable par configuration XML, par annotations ou par API. Bien sûr cela permet de choisir mais cela impose un arbitrage selon ses besoins.

Il n'est pas rare que les livrables aient une taille importante du fait des nombreuses librairies requises par Spring et ses dépendances.

 

81.6. Spring et Java EE

Spring est né de l'idée de fournir une solution plus simple et plus légère que celle proposée par Java 2 EE. C'est pour cette raison que Spring a été initialement désigné comme un conteneur léger (lightweight container).

L'idée principale de Spring est de proposer un framework qui utilise de simples POJO pour développer des applications plutôt que d'utiliser des EJB complexes dans un conteneur.

Spring ne respecte pas les spécifications de Java EE mais il intègre et utilise de nombreuses API de Java EE (Servlet, JMS, ...). Spring propose aussi une intégration avec certains composants de Java EE notamment les EJB.

Java EE utilise une approche convention over configuration : par exemple, les EJB sont par défaut transactionnels. Spring utilise une approche ou la configuration doit être explicite.

Spring est de plus en plus controversé notamment à cause de son empattement et de sa complexité croissante. De plus, face à la simplification engagée par Java EE à partir de sa version 5 et à l'ajout de l'injection de dépendances dans Java EE 6, le choix entre Java EE et Spring n'est plus aussi facile.

 


  Partie 12 : Le développement d'applications avec Spring 82. Spring Core Imprimer Sommaire Consulter avec table des matières Développons en Java   v 2.10  
Copyright (C) 1999-2016 .