Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Java Spring
  3. Éléments constitutifs du framework
Extrait - Java Spring Le socle technique des applications Jakarta EE (4e édition)
Extraits du livre
Java Spring Le socle technique des applications Jakarta EE (4e édition) Revenir à la page d'achat du livre

Éléments constitutifs du framework

Introduction

Ce chapitre présente, dans un premier temps, Spring dans son contexte historique et décrit, dans un second temps, ses constituants ainsi que des éléments de configuration.

Historique

Historiquement le framework Spring a été conçu pour faciliter la création d’application d’entreprise dans un conteneur web léger comme Tomcat, c’est-à-dire sans gestion d’EJB.

Les tableaux suivants apportent un repérage temporel.

Évolution de Java Entreprise

Année

Version

Contenu

1999

J2EE 1.2

Servlets, JSP, EJB (1.1), JMS, RMI

2001

J2EE 1.3

EJB (2.0 CMP), JCA

2003

J2EE 1.4

EJB (2.1 MDB), Web services, JAX-RPC, Deployment Specification

2006

Java EE 5

EJB (3.0 annotations), JPA, Annotations, JSF, JAX-WS

2009

Java EE 6

Profil web, Servlet 3.0, EJB (3.1 singletons, lite, asynchronous), CDI, JAX-RS

2013

Java EE 7

JMS 2.0, JAX-RS 2.0, Servlet 3.1, API JSON, WebSockets

2017

Java EE 8

CDI 2.0, JSON-B 1.0, Servlet 4.0, JAX-RS 2.1, JSF 2.3, JSON-P 1.1, Bean Validation 2.0, JPA 2.2, WebSocket 1.6

Assez rapidement après la sortie de Java, apparaissent les principes de conception basés sur les JavaBeans qui seront utilisés par exemple dans les bibliothèques graphiques Java comme AWT. Cependant, rien n’existe pour s’en servir côté serveur d’applications. Une tentative est faite avec les EJB 1, mais on s’éloigne énormément des principes, l’évolution vers les EJB 2 complique encore les choses.

À cette époque les JVM sont de taille réduite, nécessitant de les multiplier et les faire communiquer entre elles pour disposer d’une JVM composite (composées de nœuds) plus grande. Une JVM utilise alors pratiquement toute la mémoire vive d’une machine. Nous regroupons les machines par cluster en spécialisant et organisant les nœuds, ce qui permet d’avoir au final un plus grand espace mémoire et plus de capacité de calculs (CPU). Il y a alors souvent un nœud maître qui supervise plusieurs nœuds secondaires.

En 2002, la situation était très spéciale. Vous n’étiez pas Architecte Java si vous ne codiez pas avec des EJB 2.0 qui étaient un rattrapage des EJB 1.1. Or cette technologie n’était pas mature et très peu de projets finissaient en production. La complexité de mise en œuvre était extrême. Les choses fonctionnaient à...

Utilité de Spring dans un projet

Le framework Spring est une solution légère basée sur des briques logicielles indépendantes. Il apporte des solutions techniques unifiées pour la plupart des difficultés standards rencontrées sur les projets. Il offre des implémentations pour un ensemble de design patterns (patrons de conception) comme nous le verrons dans un chapitre dédié à ce sujet. Les librairies d’extension apportent également des facilités pour l’utilisation des bibliothèques logicielles les plus utilisées. Il devient alors très facile de faire des web services SOAP, des services REST d’accéder aux données, de faire une application basée sur des enchaînements d’écrans. Les différences entre les implémentations des frameworks standards d’accès aux données sont lissées avec l’utilisation d’une API unifiée.

Les projets sont alors focalisés sur la partie métier, la partie technique étant gérée par le framework Spring. Ce dernier a été conçu à l’origine pour Java mais il existe aujourd’hui pour d’autres plates-formes comme .NET.

Spring est sous licence Apache 2.0. Il est en open source. Les sources sont accessibles et des demandes d’évolutions sont possibles depuis l’URL https://github.com/spring-projects. Il est même possible de proposer des corrections de bugs ou de proposer des évolutions à travers les « change requests » (demandes de changements).

L’ensemble est mavenisé (avec les sources et la javadoc) sur le repository central Maven pour la version standard et sur les repositories Maven SpringSource pour les versions en cours de développement. Nous retrouverons l’emplacement des repositories en fin de chapitre. Il est possible d’utiliser Maven ou Gradle pour faire des projets Spring. Dans cet ouvrage, nous n’utilisons principalement que des versions Maven. Le framework Spring est une solution full stack, c’est-à-dire qu’il inclut toutes les briques techniques, et permet de faire des applications complètes, clé...

Vue d’ensemble et sujets abordés dans l’ouvrage

1. Les modules Spring

La documentation Spring liste à ce jour une vingtaine de modules Spring regroupés par thèmes. Les versions 4.3 et 5.3 sont utilisées pour les exemples de cet ouvrage.

Le noyau central en versions 4.3.30 et 5.3.18

Nom du module

Utilité

spring-core

Les fondamentaux : gestion des objets et des proxy.

spring-beans

Le paramétrage et les fabriques de beans.

spring-context

Gestion du contexte, EJB, JMX, JNDI, scheduling, validation.

spring-context-support

Support ehcache, guava, mail, scheduling UI.

spring-expression

Expresssion language Spring : SpEL.

L’AOP

Nom du module

Utilité

spring-aop

AOP via les proxy.

spring-aspects

Aspects basés sur AspectJ.

spring-instrument

Agent d’instrumentation pour le bootstrapping de la JVM.

spring-instrument-tomcat

Agent d’instrumentation pour Tomcat.

Les messages

Nom du module

Utilité

spring-messaging

Pour avoir des applications basées sur les messages. 

Accès aux données

Nom du module

Utilité

spring-jdbc

Facilités JDBC.

spring-tx

Gestion programmatique des transactions.

spring-orm

Mapping Hibernate (JPA et JDO).

spring-oxm

Mapping Object/XML comme JAXB, Castor, XMLBeans, JiBX et XStream.

spring-jms

Module Java Messaging Service et intégration spring-messaging depuis Spring Framework 4.1.

Web

Nom du module

Utilité

spring-web

Composants web.

spring-webmvc

Web services REST et web MVC.

spring-websocket

Web sockets.

spring-webmvc-portlet

Web dans un contexte portlet.

Test

Nom du module

Utilité

spring-test

Aide pour utiliser JUnit et TestNG avec Spring et objets mock.

2. Sujets abordés

Comme nous l’avons vu dans l’avant-propos, Spring est très vaste. Nous ne pouvons tout traiter dans un seul ouvrage, cependant nous traiterons les sujets les plus utilisés, à savoir la partie arrière (back) des applications web et souvent mobiles, ainsi que la partie avant (front) pour laquelle nous nous limiterons aux applications web en incluant dans cette partie les services web. Nous décrirons les tests unitaires associés autant que possible. Les exemples sont issus de cas réels présents dans les projets téléchargeables. La programmation par aspect qui est très utilisée avec Spring est également détaillée....

Compléments

Les curieux peuvent télécharger une des premières versions de Spring en version 0.9 ici : https://sourceforge.net/projects/springframework/files/springframework/0.9/spring-framework-0.9.zip/download qui date du 26/06/2003 avec le JDK 1.4 (JDK 1.5). Cette version est compatible avec le JDK 1.4 en patchant ce JDK pour avoir les annotations en avance de phase.

La version 1.0 est aussi disponible et compile moyennant des modifications mineures.

Nous retrouvons dans ces versions l’essence même de Spring.

Points clés

  • Le framework Spring est modulaire.

  • Nous utilisons Maven pour le configurer.

  • Les applications web et les tests sont les deux atouts de Spring.