Introduction to Spring Framework

Programming, JavaEE, .NET, Spring · course

Browse all programmation documents

Introduction SPRING

Département Informatique

UP JavaEE / .NET

Bureau E204

© 2019-2020 – ESPRIT – Module Spring – Introduction

1

Plan du Cours

– Introduction : Horaires, Evaluation

– Spring et le Marché de l'Emploi

– Contenu du Module Spring

– Historique Spring

– Concurrents Spring

– projets Spring

– Framework Spring

– Serveur web vs. Serveur d’application

– Les architectures physiques

– Présentation et Installation des Outils : JDK, STS, Tomcat, MySQL,

Maven, Log4J, Junit

© 2019-2020 – ESPRIT – Module Spring – Introduction

2

Horaires

• Durée Totale

• Séances

• Cours

• TP

: 42 heures

: 14 séances

: 12 heures

: 30 heures

• Durée de chaque Séance : 3 heures

• Durée de la Pause : 15 minutes

• * Vendredi : 13h45

09h00

10h30

12h15

13h30 *

15h00

16h45

15

15

© 2019-2020 – ESPRIT – Module Spring – Introduction

3

Evaluation

L’évaluation se fait tout au long du module, et non pas uniquement à la fin.

La moyenne du module est calculée comme suit :

Moyenne = Note Contrôle Continu 40% + Note Examen 60%

Le Contrôle Continu prend en compte l’Assiduité, la Participation, les TP à faire

en cours ou chez vous et aussi un Examen Blanc Pratique.

L’Examen sera écrit par UE ou pratique (selon les conditions).

© 2019-2020 – ESPRIT – Module Spring – Introduction

4

Evaluation

• Exemple d’évaluation :

© 2019-2020 – ESPRIT – Module Spring – Introduction

5

Spring et le Marché du Travail

• Les offres d’emploi « Cherche Développeur Java », en général

cherchent un développeur dans les technologies suivantes :

• Front-End : Angular, Spring MVC, VueJS, ReactJS …

• Back-End : Spring, EJB, Hibernate, Spring Data JPA, Quarkus

• Outils : Spring Boot, Maven, GIT, Jenkins, Sonar, …

• Base de Données : PostgreSQL, Oracle, MySQL, …

• Méthode Agile : Scrum, extreme Programming

• https://www.tanitjobs.com/job/881048/d%C3%A9veloppeur-

java-spring-boot-

exp%C3%A9riment%C3%A9/?backPage=1&searchID=163093713

7.7228

© 2019-2020 – ESPRIT – Module Spring – Introduction

6

Spring et le Marché de l'Emploi

© 2019-2020 – ESPRIT – Module Spring – Introduction

7

Spring et le Marché de l'Emploi

© 2019-2020 – ESPRIT – Module Spring – Introduction

8

Contenu du Module Spring

Introduction à Spring et Mise en place de l’Environnement

• Maven

• Spring Boot

IoC & DI (Injection des dépendances)

Lombok

• Spring Data JPA (Première Entité - Associations - CRUD / JPA Repository – JPQL)

• Spring MVC REST ( Postman+ Swagger)

Tests unitaires (JUnit , mockData)

TP gestion Magasin et Stock

• Spring Scheduler

• Spring Batch

• AOP (Aspect Oriented Programmation)

• Spring Security

• Examen Blanc Pratique (Spring Boot - REST - Spring Data – AOP-etc..)

© 2019-2020 – ESPRIT – Module Spring – Introduction

9

Bref Historique JavaEE

• 1995 : Java est apparu, développé par James Gosling chez Sun Microsystems.

Advertisement

• 1997 : Les servlets arrivent pour la création des pages web dynamiques.

• 1999 : Les JSP arrivent pour faciliter la création des pages web dynamiques et

résoudre les problèmes de servlets.

Les JSP séparent les contrôleurs de la partie présentation.

La question qui se pose, comment les servlets/JSP vont assurer, la logique métier et

la persistance ?

Toujours en 1999 : J2EE vient comme réponse à la question précédente

(transactions, sécurité, messaging ...) en introduisant les EJB.

EJB promettait sécurité et disponibilité mais la réalité était tout autre ( couplage

fort avec le serveur d’application, temps de configuration considérable...).

© 2019-2020 – ESPRIT – Module Spring – Introduction

10

Bref Historique JavaEE

• 1999 : J2EE (Java 2 Enterprise Edition) depuis la version 1.2 et jusqu’à la

version 1.4 en 2003).

• 2006 : JavaEE 5 ou JEE (Java Enterprise Edition) depuis la version 5 (Ajout

des annotations)

• 2010 : Sun a été rachetée par Oracle en 2010 (Java est à la base une

propriété de Sun Microsystems )

Oracle a cédé la plateforme JavaEE à Eclipse Foundation, mais en

exigeant le changement de son nom

• 2017 : Java EE 8 (version obselète)

• 2019 : Jakarta EE 8 (Nouveau nom JakartaEE à la place de JavaEE )

© 2019-2020 – ESPRIT – Module Spring – Introduction

11

Historique Spring

• 2002 : Rod Johnson publie son livre «Expert One-on-One J2EE Design

and Development», dans lequel il propose du code, qui va devenir

plus tard le Framework Spring

• 2004 : Rod Johnson publie son livre «J2EE Development without EJB».

• 2004 : Spring 1.0, licence Apache 2.0

• 2005 : Spring devient populaire, en particulier en réaction par rapport

aux EJB 2.x

=> La configuration de l’application par la main rendait la manipulation

de Spring difficile.

• 2006 : Spring 2.0 ( Introduction de l’injection de dépendances )

• 2007 : Spring 2.5, avec support des annotations

• 2009 : Spring 3.0

• 2013 : Spring 4.0

• 2017 : Spring 5.x,

• Avril 2021 : Spring 5.3.6 (version courante )

© 2019-2020 – ESPRIT – Module Spring – Introduction

12

Concurrents Spring

Jakarta EE vs. Spring vs. Quarkus

© 2019-2020 – ESPRIT – Module Spring – Introduction

13

Concurrents Spring

Jakarta EE

• Jakarta EE 8, comme son nom l’indique, est fonctionnellement identique à

Java EE 8, publié par Oracle et possède les mêmes spécifications.

• Jakarta EE a été optimisé pour le cloud computing.

• Selon la fondation Eclipse, l’un des principaux objectifs de Jakarta EE est

d'accélérer le développement d'applications d'entreprise pour le Cloud

Computing (les applications cloud natives).

© 2019-2020 – ESPRIT – Module Spring – Introduction

14

Concurrents Spring

Jakarta EE

• La plateforme JakartaEE est en pleine mutation et modification. Attendons

qu’elle soit stable.

• La plateforme JavaEE est un ensemble de spécifications JSF, EJB, JPA. Elle

n’est plus maintenue par Oracle, donc bientôt obsolète.

• Le cœur de cette plateforme est les EJB.

Inconvénients des EJB :

– Difficile à coder, il faut implémenter des interfaces spécifiques …

– Les tests unitaires sont difficiles à réaliser.

– C’est une solution qui nécessite un serveur d’application ⇒ lourd et

gourmand en ressources.

© 2019-2020 – ESPRIT – Module Spring – Introduction

15

Concurrents Spring

Jakarta EE vs Spring

• Le choix d’une technologie dépend de plusieurs critères dont les

fonctionnalités offertes et l’expérience du développeur (un développeur

avec 10 ans d’expérience JavaEE te dira toujours que JakartaEE est le

meilleur peut importe les concurrents (sentiment d’appartenance)).

• Les défendeurs de JakartaEE mentionneront que le développement de la

plateforme n’est pas lié à une seule compagnie comme c’est le cas pour

Spring. Il s’agit plutôt d’une communauté qui assure la longévité de leurs

projets pour les années à venir.

• Les pro-Spring vous diront qu’au contraire Spring est plus fiable sur la durée

et que le fait qu’il est très demandé sur le marché ( beaucoup plus que

JakartaEE) est une raison évidente pour choisir ce Framework.

© 2019-2020 – ESPRIT – Module Spring – Introduction

16

Concurrents Spring

Quarkus

Quarkus est un framework Java natif Kubernetes conçu pour les machines

virtuelles Java (JVM) optimisant Java spécifiquement pour les conteneurs

et lui permettant de devenir une plate-forme efficace pour les

environnements sans serveur, cloud et Kubernetes.

Tout comme Spring, Quarkus a été conçu pour être facile à utiliser dès le

départ, avec des fonctionnalités avec peu ou pas de configuration.

© 2019-2020 – ESPRIT – Module Spring – Introduction

17

Concurrents Spring

Quarkus vs. Spring

Spring et Quarkus sont en concurrence sur les critères du temps du lancement

Advertisement

et l’occupation de la mémoire.

L'évolutivité et l'architecture sans serveur sont aussi des critères pris en

considération dans les dernières versions fournies par ces deux frameworks.

© 2019-2020 – ESPRIT – Module Spring – Introduction

18

Concurrents Spring

Basé sur la comparaison et la demande du marché, nous allons nous

focaliser dans notre cours sur Spring et utiliser une implémentation de JPA

fournie par Spring : Spring Data JPA.

© 2019-2020 – ESPRIT – Module Spring – Introduction

19

Les Projets Spring

• https://spring.io/projects :

• Spring est un ensemble de projets.

• Spring a une vaste communauté et une bonne documentation.

• Le code est sous license Apache 2, il est Open Source et disponible sur

GitHub.

© 2019-2020 – ESPRIT – Module Spring – Introduction

20

Les Projets Spring

© 2019-2020 – ESPRIT – Module Spring – Introduction

21

Les Projets Spring

• Spring Framework (Spring Core): C’est le cœur des projets Spring. Ce

framework contient les fonctionnalités de base de Spring. Ce

framework contient Spring MVC.

• Spring Batch : permet le développement des applications de type

batch qui peuvent gérer de gros volumes de données

• Spring Integration : il s’agit d’un ESB (Enterprise Service Bus) pour

interconnecter les applications d’une entreprise

• Spring Android : a pour but de faciliter le développement

d'applications Android

• Spring Boot : C’est un outil Spring qui vous permet d’embarquer un serveur

Tomcat dans votre livrable, et simplifier la livraison et le test de votre

application.

• Spring Data JPA : fournit une implémentation de la couche d’accès aux

données.

• Spring Security : permet de gérer l'authentification et les habilitations d'une

application web.

© 2019-2020 – ESPRIT – Module Spring – Introduction

22

Framework Spring (Spring Core)

• C’est quoi un Framework :

– C’est un cadre de développement

– Contient des «bonnes pratiques»

– Permet d’éviter de recoder des classes utilitaires

– Permet de se focaliser sur le métier

• Spring fournit la «plomberie» : le socle technique

• Les développeurs peuvent se concentrer sur le code métier (le

vrai travail)

• « Attention un framework ne doit pas être considéré comme

une plate-forme, dans la mesure où il n'intègre pas

d'environnement d'exécution système ou applicatif. »

© 2019-2020 – ESPRIT – Module Spring – Introduction

23

Framework Spring

• Le Framework Spring est un socle pour le développement

d'applications.

Il fournit de nombreuses fonctionnalités.

• C’est l’un des Frameworks les plus répandus dans le monde

Java.

• Framework Open Source

• Framework Spring (Spring Core) : http://projects.spring.io/spring-

framework

© 2019-2020 – ESPRIT – Module Spring – Introduction

24

Framework Spring

• Le but de Spring est de faciliter et de rendre productif le

développement d'applications.

Il fournit beaucoup de fonctionnalités :

– Injection de Dépendances (IoC : Inversion de Control).

– AOP : Aspect Oriented Programming : Injection de Code en

RunTime.

– Data Access : Permet de simplifier l’accès aux données (DAO,

ORM, Transaction, …).

– Web : Permet de développer des interfaces web évoluées (MVC).

– Testabilité de l'application facilitée

– Intégration : Spring offre un ESB, qui permet l’intégration et la

communication entre les applications (EAI).

© 2019-2020 – ESPRIT – Module Spring – Introduction

25

Framework Spring

© 2019-2020 – ESPRIT – Module Spring – Introduction

26

Architecture logique

• Une application typique utilisant Spring est généralement

structurée en trois couches :

– Couche Présentation : (Web + Contrôleur)

– Couche Service : interface métier avec mise en œuvre de

certaines fonctionnalités.

– Couche Accès aux Données : recherche et persistance des objets.

• Spring est un Framework utilisé pour créer et injecter les objets

requis pour communiquer entre les différentes couches.

© 2019-2020 – ESPRIT – Module Spring – Introduction

27

Serveur Web vs Serveur d’Application

Serveur Web

Serveur d’application JavaEE

Serveur web + container

Héberge que la couche présentation et l’expose qu’à travers le

protocole HTTP(S)

Advertisement

Héberge la logique métier et peut aussi héberger la couche

présentation (supporte différents protocoles : HTTP, JNDI,

...).

Ne peut pas inclure un EJB Container.

Doit inclure un EJB Container.

lightweight

Relativement gourmand en ressources (CPU, RAM et Disk).

Exp : Apache HTTP Server, Tomcat, Jetty ....

Exp : Wildfly, WebSphere ...

© 2019-2020 – ESPRIT – Module Spring – Introduction

28

Serveur Web vs Serveur d’Application

© 2019-2020 – ESPRIT – Module Spring – Introduction

29

Serveur Web vs Serveur d’Application

Spring IOC Container

Dans une application Spring, les objets sont crées, sont liés ensembles et

communiquent dans le Spring IOC Container.

© 2019-2020 – ESPRIT – Module Spring – Introduction

30

Architecture Physique

• Tier est un mot anglais qui signifie étage ou niveau.

• Une application peut être 1-Tier, 2-Tiers, 3-Tiers ou N-Tiers.

© 2019-2020 – ESPRIT – Module Spring – Introduction

31

Architecture Physique - 1-Tiers

• Une application 1-Tier est, par exemple, la Modification d’un

document Word sur un ordinateur Local.

• Tout est sur la même machine et les couches sont fortement liées.

Inconvénients : Risque de perte des données (non sauvegardées à

distance), Impossible d’accéder à une même ressource par deux

utilisateurs en même temps.

© 2019-2020 – ESPRIT – Module Spring – Introduction

32

Architecture Physique - 2-Tiers

• Une application 2-Tiers est typiquement une application client lourd.

Le niveau Présentation (IHM) et le niveau Traitement sont sur la machine

de l’utilisateur.

Le niveau Base de Données est sur un autre serveur.

• C’est une architecture Client / Serveur.

• Client = demandeur de ressource

• Serveur = fournisseur de ressource

Inconvénients

Toute mise à jour des fonctionnalités nécessitent un déploiement sur toutes

les machines des utilisateurs.

Le serveur ne fait pas appel à une autre application pour fournir le service.

© 2019-2020 – ESPRIT – Module Spring – Introduction

33

Architecture Physique - 3-Tiers

• Une application 3-Tiers introduit un niveau intermédiaire ( middleware) entre

le client et le serveur.

un autre serveur.

Le niveau intermédiaire est chargé de fournir la ressource en faisant appel à

Avantages

• Centraliser la logique application sur un serveur HTTP

Inconvénients

Le serveur HTTP ( élément principale de l’architecture )est fortement sollicité

d’où une charge de demandes provenant à la fois du client et du serveur.

• Bien que cette architecture résout le problème du client lourd de

l’architecture deux tiers, le soulagement du client est remplacé par un

serveur fortement sollicité.

© 2019-2020 – ESPRIT – Module Spring – Introduction

34

Architecture Physique - 3-Tiers

• Une application 3-Tiers est typiquement une application Web :

– Niveau Présentation : IHM (Navigateur sur la machine de l’utilisateur)

– Niveau Traitement : Un serveur web (Tomcat, …) qui contient le WAR de

notre application.

– Niveau Base de données : Un serveur de BD qui stocke les données de

notre application.

© 2019-2020 – ESPRIT – Module Spring – Introduction

35

Architecture Physique - N-Tiers

L’architecture N tiers assure un équilibre de charge entre le client et le

serveur par l’introduction de nouvelles couches.

• Voici une architecture 4-Tiers d’une application web développée par un

étudiant Esprit pendant son projet de fin d’étude (GUI – Angular sur le Serveur

NodeJS – Spring Boot (Serveur Web Tomcat embarqué) – Serveur de base de

données MySQL) :

© 2019-2020 – ESPRIT – Module Spring – Introduction

36

Architecture Physique - N-Tiers

• Voici une architecture 4-Tiers, en Micro-Servcies, d’une application web

développée par un étudiant Esprit pendant son projet de fin d’étude : GUI /

NodeJS / Spring Boot / DB

© 2019-2020 – ESPRIT – Module Spring – Introduction

37

Installation des Outils

Les outils suivant vont nous permettre de développer des applications Web

avec Spring.

• Avant de faire l’installation, vérifiez que vous n’avez pas ces outils déjà

installés. Si c’est la cas, pas besoin de les réinstaller (vous pouvez utiliser

d’autres versions) :

Advertisement

JDK 8 - version 1.8.0.060 - (1.8 -peu importe la version mineure- déjà installé sur

vos machine normalement)

Tomcat 8.5.28

• STS 3.8.4 (Eclipse 4.6.3)

• WAMP 3.1 ou XAMP (déjà installé sur vos machine normalement), pour avoir

MySQL 5.6.17

• Maven 3.5.0 (existe déjà en tant que plugin Eclipse, rien à installer).

• Par souci d’homogénéité, vous pouvez créer un dossier C:\Products, dans

lequel, vous allez installer tous les outils que nous allons utiliser par la suite.

© 2019-2020 – ESPRIT – Module Spring – Introduction

38

Installation JDK 8

Installer la JDK dans C:\Products\java\jdk-1.8.0.60

Installer la JRE dans C:\Products\java\jre-1.8.0.60

• La JRE est installée en même temps que la JDK.

• Créer la variable d’environnement système : JAVA_HOME qui

contient le chemin de la JDK:

© 2019-2020 – ESPRIT – Module Spring – Introduction

39

Installation JDK 8

• Ajouter %JAVA_HOME%\bin au Path :

© 2019-2020 – ESPRIT – Module Spring – Introduction

40

Installation JDK 8

• Vérifier que Java est bien installé et que la variable

d’environnement est bien positionnée (javac et java) :

© 2019-2020 – ESPRIT – Module Spring – Introduction

41

Installation Tomcat

Il suffit de dézipper le fichier apache-tomcat-8.5.28-windows-

x86.zip

© 2019-2020 – ESPRIT – Module Spring – Introduction

42

Installation STS (Spring Tool Suite)

Il suffit de dézipper le fichier spring-tool-suite-3.8.4.RELEASE-

e4.6.3-win32-x86_64.zip

• Si vous n’avez pas le fichier vous pouvez le télécharger :

Téléchargement STS 3.8.4 : http://spring.io/tools/sts/all

© 2019-2020 – ESPRIT – Module Spring – Introduction

43

Configuration IDE STS

• Ouvrir STS, choisissez le workspace, par exemple workspace-sts :

• Et cliquer sur WorkBench.

© 2019-2020 – ESPRIT – Module Spring – Introduction

44

Configuration IDE STS

Faire pointer STS sur JDK 8 :

• Ouvrir window -> preferences -> installed jre -> mettre que la jdk 8(pas la jre). Voir

slides suivants

Supprimer la ligne correspondant à la JRE

• Créer une standard VM en pointant sur la JDK :

Important : Pointer sur la JDK et non la JRE (Window – Preference – Installed JRE).

© 2019-2020 – ESPRIT – Module Spring – Introduction

45

Configuration IDE STS

Important : Pointer votre Execution Environment vers la JDK.

© 2019-2020 – ESPRIT – Module Spring – Introduction

46

Configuration IDE STS

• Activer l’auto-complétion (CTRL + ESPACE) : Windows -

Preferences - Java - Content Assist – Advanced :

© 2019-2020 – ESPRIT – Module Spring – Introduction

47

Configuration Tomcat dans STS

• Ouvrir STS

• Aller a la Vue « servers » (window -> show view -> servers).

• new-> server et pointer sur le chemin du Tomcat 8.5.

• Démarrer le serveur, voir les logs (view console).

• Ce serveur sera utilisé pour le cours Spring MVC uniquement.

• Avec Spring Boot, il n’y aura plus besoin d’installer un Tomcat

nous-mêmes. Tomcat sera embarqué directement dans notre

application.

© 2019-2020 – ESPRIT – Module Spring – Introduction

48

Prochain Cours

• Finaliser l’Installation de l’Environnement de travail (JDK, STS,

Tomcat, MySQL, Maven)

• Comprendre Maven

• Créer vos premiers projets avec les outils ci-dessus.

© 2019-2020 – ESPRIT – Module Spring – Introduction

49

INTRODUCTION SPRING

Si vous avez des questions, n’hésitez pas à nous

contacter :

Département Informatique

UP Architectures des Systèmes d'Information

Bureau E204

© 2019-2020 – ESPRIT – Module Spring – Introduction

50

Introduction SPRING

© 2019-2020 – ESPRIT – Module Spring – Introduction

51