Cours Spring


Tutoriel de Spring pas à pas

Tutoriel de Spring pas à pas
Vous voulez vous perfectionner avec le Framework Spring (contrôleur, DevTools, vue Model, ModelMap et ModelAndView, variables de chemin, etc.), téléchargez ce cours sous form...

Support de cours du Framework Spring et Hibernate

Support de cours du Framework Spring et Hibernate
Support de cours du Framework Spring et Hibernate, document à télécharger gratuitement sous format PDF....

Cours Spring : Les services, les modules et les patrons de conception

Cours Spring : Les services, les modules et les patrons de conception
2 introduction au framework spring au sommaire de cours spring : les services, les modules et les patrons de conception ce chapitre u le framework spring u installer le framew...

Problématiques des développements Java EE

Malgré une simplification progressive, la plate-forme Java reste complexe, demandant des connaissances techniques approfondies. En contrepartie, elle est d’une grande puissance et permet de répondre aux besoins des applications les plus ambitieuses. Développer des applications avec une approche 100 % Java EE révèle cependant quatre faiblesses récurrentes :
• Mauvaise séparation des préoccupations : des problématiques d’ordres différents (technique et métier) sont mal isolées. Cependant, c’est certainement dans ce domaine que Java EE a fait le plus de progrès depuis J2EE, notamment grâce à des concepts popularisés par des frameworks comme Spring.



• Complexité : Java EE reste complexe, notamment à cause de la pléthore de spécifications disponibles. Les équipes de développement n’ont pas d’angle d’attaque évident et se retrouvent parfois noyées sous l’offre. L’exemple typique est un serveur d’applications monolithique, implémentant la totalité de la spécification Java EE, dont à peine 20 % sont nécessaires pour développer la plupart des applications.
• Mauvaise interopérabilité : malgré la notion de standard, les technologies ne sont pas toujours interopérables et portables. Une implémentation JPA disposera toujours d’options différentes de ces consoeurs et une application Web pourra rarement passer d’un serveur d’applications à un autre sans réglage supplémentaire.
• Mauvaise testabilité : les applications dépendant fortement de l’infrastructure d’exécution, elles sont plus difficilement testables. C’est aussi une des conséquences d’une mauvaise séparation des préoccupations.


Pour remédier aux problématiques du développement d’applications d’entreprise dans le cadre d’une solution 100 % Java EE, un ensemble de solutions a émergé comme la framework Spring.

Tout sur la framework Spring

Bien que populaire, la création d'applications de serveur Java à base de composants utilisant J2EE n'était pas une activité amusante.

La construction d'EJB et la création d'applications à partir d'EJB sont des processus complexes qui impliquent beaucoup de codage fastidieux et nécessitent la gestion d'un grand nombre de codes sources, même pour de petits projets.

La description de Rod d'un conteneur léger qui peut minimiser la complexité d'une construction d'application côté serveur était une bouffée d'air frais pour la communauté de développement J2EE étouffante. Spring - en conjonction avec des concepts simples mais révolutionnaires tels que l'injection de dépendance (abordée plus loin dans ce chapitre) - a capturé l'imagination de nombreux développeurs de serveurs Java.

Autour de ce corps de code est née une communauté de développement active basée sur Internet. La communauté était centrée autour du site Web de l'entreprise de Rod (interface21.com/), et du site Web Spring framework associé (springframework.org/).

L'adoption du framework continue d'augmenter dans le monde entier alors que Rod et son groupe continuent de développer le framework et que de plus en plus de développeurs découvrent cette alternative open-source pratique et légère à J2EE. Le cadre logiciel lui-même s'est également considérablement développé, soutenu par une industrie de composants complémentaires de logiciels tiers.

Tout pour la simplicité

En 2007, la version 2 du framework Spring a été lancée et l'utilisation du framework Spring à la place de J2EE pour le développement d'applications d'entreprise côté serveur n'est plus une notion, mais une réalité quotidienne pratiquée dans le monde entier. L'accent mis par Spring sur la séparation et le découplage propres des composants d'application, sa philosophie légère et son attitude fanatique envers la réduction de la complexité du développement lui ont valu une place permanente dans le cœur et l'esprit des développeurs d'entreprise Java.

Spring a eu un impact si important sur la communauté des développeurs que le groupe d'experts Java Enterprise Edition a dû revoir sa conception. Dans Java EE 5, la complexité de la création d'EJB a été considérablement réduite en réponse à des plaintes d'utilisateurs infâmes. La plupart des principes et des approches allégés de J2EE, y compris l'injection de dépendances, ont évolué avec le temps.

La notion de conteneur léger

Dans le monde Java, un conteneur léger est souvent opposé à un conteneur EJB, jugé lourd technologiquement et surtout peu adaptatif par rapport aux différents types de problématiques courantes dans le monde des applications d’entreprise.

Le conteneur léger fournit un support simple mais puissant pour gérer une application via un ensemble de composants, c’est-à-dire des objets présentant une interface, dont le fonctionnement interne n’a pas à être connu des autres composants. Le conteneur léger gère le cycle de vie des composants (création, destruction), mais aussi leurs interdépendances (tel composant s’appuie sur tel autre pour fonctionner).

Le conteneur léger permet d’avoir des applications plus portables, c’est-à-dire parfaitement indépendantes du serveur d’applications, car l’application vient avec son propre conteneur, qui lui fournit l’infrastructure dont elle a besoin.

À travers son approche par composants, le conteneur léger encourage les bonnes pratiques de programmation : par interface, et à faible couplage. Cela assure une meilleure évolutivité des applications, mais aussi améliore grandement leur testabilité. Le coeur de Spring est un conteneur léger, qui est aujourd’hui considéré comme le plus complet sur le marché.

La programmation orientée aspect

La programmation orientée aspect (POA) est un paradigme de programmation qui consiste à modulariser des éléments logiciels en complément d’approches telles que la programmation orientée objet.

La POA se concentre sur les éléments transversaux, c’est-à-dire ceux qui se trouvent dupliqués ou utilisés dans de nombreuses parties d’une application, sans pouvoir être centralisés avec les concepts de programmation « classiques ». Des exemples d’éléments transversaux sont la gestion des transactions, la journalisation ou la sécurité. La POA améliore donc nettement la séparation des préoccupations dans une application.

Spring propose depuis sa première version un excellent support pour la POA et a finalement contribué à sa popularisation. En effet, dans la mesure où le conteneur léger de Spring contrôle le cycle de vie des composants d’une application, il peut leur ajouter du comportement (on parle aussi de décoration), et ce de façon complètement transparente. Le support de la POA par Spring n’impose aucune contrainte et permet d’ajouter très facilement du comportement à n’importe quel type d’objet.

L’intégration de frameworks tiers

Spring propose une intégration pour un grand nombre de frameworks et de standards Java EE.  L’intégration passe généralement par un support pour la configuration dans le conteneur léger, mais aussi par des classes d’abstraction.

Spring offrant une grande cohérence, les frameworks sont généralement intégrés de manière similaire, ce qui facilite l’assimilation et le passage de l’un à l’autre. Spring laisse aussi toujours la possibilité d’utiliser l’API native des frameworks, car il se veut « non intrusif ».

Il est important de noter que Spring ne limite jamais les possibilités d’un framework en raison de l’intégration qu’il propose.
Un exemple caractéristique de cette intégration est le support d’Hibernate proposé par Spring. Une partie de la configuration d’Hibernate est automatiquement prise en charge, et la gestion des ressources (connexion à la base de données, transactions), contraignante et propice à des erreurs de programmation, est faite par les classes de support de Spring.

Framework Spring Java EE