mercredi 29 février 2012

Spring

Depuis quelques années mes choix techniques se sont largement orientés vers le framework Spring qui me semble être, de loin, le plus abouti, le plus performant et surtout le plus flexible.

Spring s'est attaqué depuis quelques années à toutes les problématiques propres au systèmes d'information en apportant pour chacune d'elles, des solutions ou des intégrations rendant les applications plus robuste et surtout plus très évolutive.

Spring est avant tout un conteneur léger. L'architecture d'une application Spring est structurée, configurée au sein du conteneur dont l'une des caractéristiques, est sa portabilité si bien que tout application exécutée dans ce cadre est, elle même, portable sur tout serveur d'application sans aucune difficulté.

Ensuite, le conteneur léger, de Spring gère complètement le flot d'exécution de ses applications. Il s'agit de sa capacité d'inversion de contrôle sur les applications qu'il gère. Spring prend le contrôle à différents niveaux:
  • Au niveau du cycle de vie des composants (instanciation).
  • Au niveau de l'interdépendance des composants.
  • Au niveau de l'aiguillage vers les bonnes unités de traitements comme par exemple, dans les cas suivants:
      • Dans le cas d'application WEB avec le choix des contrôleurs en fonction des requêtes HTTP reçues.
      • Dans le cas des WebServices avec les redirections vers les bonnes entités de traitement ou EndPoint etc...

Spring apporte un cadre intéressant pour le développement des applications. En imposant une programmation par contrat (interfaces), le famework favorise les bonnes pratiques de programmation, c'est à dire:
  • Un couplage faible entre les classes et notamment entre les Services et les classes qui les utilisent.
  • L'intégration de nombreuses technologies dans nos applications par l'utilisation systématique du Design Pattern Stratégie. A une interface correspond N implémentations et donc N fournisseurs pour un même contrat. C'est le cas par exemple pour les stratégies de sécurité, pour un même contrat, on a le choix entre une authentification DOA, une authentification par annuaire Ldap etc...

Enfin, Spring couplé à la Programmation Orientée Aspect (POA) excelle dans l'ajout de fonctionnalités transversales dans les applications. Ainsi la Notification, la Sécurité ou tout autre fonctionnalité transversale est complètement dissociéé du reste de l'application. De manière générale, chaque méthode de n'importe quelle classe peut être interceptée grâce à la notion d' Aspect brillamment géré dans le conteneur Spring (aspect: agrégat d'une coupe et d'un greffon).