Blue Flower

Chercher

I. Généralités

1. Présentation

Spring est un Framework qui, à l'origine,  est créé  pour  permettre d'accélérer le  développement d'applications Java EE; ce framework  est modulaire et  cela lui confère  une certaine facilité pour la conception et la réalisation  d'applications java E.E.  Aujourd'hui il intègre d'autres implémentations d'autres technologies comme ".NET" ou Python. 
Les modules de base de Spring (pour le développement d'application Java E.E)  sont au nombre de  20 et l'efficacité de Spring  par rapport à d'autres Framework Java est du  au faite qu'il se  sert  des beans  (des simples  POJO - ce ne sont  pas  des javabeans), de fichiers de  configuration (fichiers XML) et d'annotations (à partir la version 2.0 les annotations Spring se sont  renforcées depuis  la version 2.5) .

Le Framework Spring utilise différentes pratiques de programmation éprouvées comme  l'IoC (Inversion of Control), les design pattern  comme le pattern Factory, le pattern Singleton pour ne citer que ces deux là. Avec  le pattern Factory,  Spring fournit deux types d'implémentation du conteneur IoC en se servant  des interfaces  BeanFactory et ApplicationContext. L’interface ApplicationContext  dérive de l'interface BeanFactory ce qui permet de  maintenir leur compatibilité et qui fait que  les fichiers de configuration des beans  des deux implémentations sont identiques.  

Pourquoi utiliser Spring ?

Ci-dessous on donne une  liste non exhaustive des raisons incitant à utiliser le Framework Spring :

  • Spring permet  de développer des applications d'entreprise en s'appuyant sur  des simples POJO, il n'a pas  besoin d'un conteneur d' EJB (au sein d'un serveur d'applications)  mais  uniquement d'un conteneur de Servlet robuste tel que Tomcat .
  • Spring est  modulaire. Même si le nombre de paquets et de classes est important, on se focalise uniquement ses modules dont on a besoin.
  • Spring utilise certaines technologies existantes en les intégrant comme modules; ainsi il agrège plusieurs modules dont certains  frameworks ORM, des frameworks de journalisation, etc ...
  • Spring permet de réaliser des tests avec simplicité . L' utilisation des POJO  facilite l'injection de dépendance pour injecter des données de test.
  • Son composant web  Spring-MVC est un framework bien conçu qui fournit une excellente alternative aux frameworks web tels que Struts.
  • Spring fournit une API pratique pour traduire les exceptions spécifiques à une technologie (par exemple pour JDBC, Hibernate ou JDO, ...) en exceptions cohérentes.
  • Le conteneur IoC (Inversion of Control) est léger en particulier par rapport aux conteneurs EJB;  ce qui est  utile pour développer et déployer des applications sur des ordinateurs avec des ressources mémoire et CPU limitées
  • Spring fournit une interface de gestion des transactions cohérente qui peut évoluer vers une transaction locale (en utilisant une base de données unique, par exemple) et passer à des transactions globales (en utilisant JTA, par exemple).

Rien que pour ces  raisons Spring a su s'imposer par rapport à d'autres framework.

2. Fonctionnalités importantes de Spring

2.1.  IoC (Inversion of Control - inversion de contrôle)

l’IoC est un principe général de conception pour la programmation et l’injection de dépendance (DI,Dependency Injection) est le design pattern concret qui l'incarne.

Spring IoC est  un framework très complet et complexe. Son fonctionnement repose sur 3 éléments clés :

  • La configuration par des fichiers XML pour lier les implémentations à leurs interfaces
  • Les classes sont des beans et possèdent donc des getters et setters pour les champs à injecter
  • L'injection  est effectuée via un fichier de configuration (par defaut c'est ApplicationContext.xml) de Spring

2.3. DI (Dependance Injection - Injection de Dépendance)

Dans chaque  application Java les objets (instances des différentes classes de l'application) échangent des informations pour permettre de présenter à l'utilisateur final un résultat . Lors de l'écriture d'une application  complexe en Java, les classes doivent être aussi indépendantes que possibles les unes des autres afin d'augmenter la possibilité de les réutiliser et de les tester de façon indépendante  lors des tests unitaires. C'est le concept de DI (injection de dépendances) qui permet à la fois d'avoir les classes liées entre elles tout en les gardant indépendantes.
Qu' est-ce que c'est l'Injection de Dépendance ?
L'injection de dépendances (Dependency Injection) est un mécanisme qui implémente le principe de l'inversion de contrôle (IoC) . Cela consiste à créer dynamiquement (injecter) les dépendances entre les différentes classes en s'appuyant sur une description (fichier de configuration ou métadonnées) ou de manière programmatique. Ainsi les dépendances entre composants logiciels ne sont plus exprimées dans le code de manière statique mais déterminées dynamiquement à l'exécution.

Il existe 4 types d'injections de dépendances :

  • Injection par constructeur et les Setters
  • Injection par interface
  • Injection par mutateur
  • Injection par champs

Spring prend en charge les injections de dépendance basées sur le constructeur et sur les setters

2.4. AOP (Aspect Orientation Programming - programmation  Orientée Aspect)

Spring prend en charge la mise en œuvre de la programmation orientée aspect où on peut utiliser les Advices (concepts utilisé dans AOP), les Pointcuts ( concepts utilisé dans AOP) etc. pour découpler le code.
Le module aspects fournit un support pour l'intégration d'avec AspectJ.
Le module d'instrumentation prend en charge les implémentations d'instrumentation de classe et de chargeur de classe
Qu' est-ce que c'est l'Injection de Dépendance ?
La programmation  Orientée Aspect (POA) permet de séparer le code métier et le code technique correspondant aux préoccupations transversales.

(à suivre)..

précédent