Tutoriel Spring Boot : projet jpa + web + thymeleaf

/////Tutoriel Spring Boot : projet jpa + web + thymeleaf

spring-boot-project-logo.pngAvec Objis, spécialiste formation Spring, maîtrisez la mise en oeuvre d’une application web (Spring MVC) implicant un accès données via JPA (Spring Data) et un moteur de template Thymeleaf. Constatez la valeur ajoutée de Spring Boot.

Prérequis

 Votre première application Spring Boot

Objectifs

 Créer un squelette de projet Spring avec Spring Boot

Programme

 Partie 1 : génération squelette projet

 Partie 2 : analyse squelette projet

 Partie 3 : paramétrage pour JPA

 Partie 4 : Paramétrage pour web

 Partie 5 : paramétrage pour thymeleaf

Durée

20 min.

Partie 1 : génération squelette projet Maven

Le site (start.spring.io) permet de créer le squelette d’arborescence d’un projet Spring basé sur Spring Boot.

L’interface est similaire à l’interface de l’assistant création de projet Spring boot de SpringSource ToolSuite (STS) .

 Sélédctionez les options : web , jpa, thymeleaf

 Choisissez un build Maven

tutoriel-creation-application-avec-spring-boot-maven

 descenderzz plus bas dans la page…

tutoriel-creation-application-avec-spring-boot-maven-2

 validez

tutoriel-creation-application-avec-spring-boot-maven-3

 Enregistrez le zip généré sur votre disque.

tutoriel-creation-application-avec-spring-boot-maven-4

 Dézippez

tutoriel-creation-application-avec-spring-boot-maven-5

 Expliquez

SQUELETTE PROJET

gestionformations-v0-squelette-spring-initializr

Partie 2: analyse arborescence squelette projet Maven

tutoriel-creation-application-avec-spring-boot-maven-6

 

tutoriel-spring-boot-annotation-springbootapplication-2

QUESTION : Expliquez la ligne 10 (Bootstrap) . Pourquoi une méthode main() alors que nous avons sélectionné une application type ‘war’ ?

QUESTION : A l’aide de la documentation de l’API Spring Boot, expliquez la ligne 6 ( l’annotation @SpringBootApplication )

tutoriel-spring-boot-annotation-springbootapplication

 Expliquez les annotations @Configuration, @ComponentScan, et @EnableAutoConfiguration de Spring Boot.

Cette dernière Annotation (auto-configuration) est la clé de voute de Spring Boot (C’est un peut comme si vous écriviez @Abracadabra) .

INFO : Spring Boot va par exemple détecter :

 Si la class JdbcTempate est dans le classpath. Si c’est le cas, ey s’il y a un bean DataSource, il va automatiquement configurer le bean.

 Si le moteur de template Thymeleaf est dans le classpath. Alors il va configurer un Bean Resolver (Spring MVC) et moteur de template Tymeleaf.

 Si SpringBoot détecte Spring security dans le classpath, il va mettre en oeuvre une configuration basique de sécurité.

C’est ainsi plus de 200 décisions que Spring Boot va réaliser et en déduire ou non une configuration

Fichier (optionnel) application.properties

tutoriel-creation-application-avec-spring-boot-maven-7

Classe de test

tutoriel-creation-application-avec-spring-boot-maven-8

 

Configuration par défaut pom.xml

3 sections clés :

— > 1) dépendance du starter parent

— > 2) dépendances spécifiques aux ‘starters’ (web, jpa, thymeleaf)

— > 3) paramétrage Tomcat

Starter parent

tutoriel-creation-application-avec-spring-boot-maven-9

Starter spécifiques au projet

Starters spécifiques

tutoriel-creation-application-avec-spring-boot-maven-10

Dépendance Tomcat

tutoriel-creation-application-avec-spring-boot-maven-11

Paramétrage JPA

3 étapes clés :

— > 1) Ajout dépendances MySQL dans le pom.xml

— > 2) Ajout des informations connection DB dans application.properties

— > 3) Ajout du Dialecte du fournisseur de persistence

Etape 1 : Ajout dépendances MySQL dans le pom.xml

config-database-mysql-spring-boot-3

 

Etape 2 : informations de connexion à MySQL

Notez que le fichier application.properties est par défaut vide.

config-database-mysql-spring-boot-1

 Ajoutez les lignes suivantes

config-database-mysql-spring-boot-2

 Expliquez.

Etape 3 : Dialecte Hibernate MySQL

 Ajouter la ligne suivante (surlignée):

config-database-mysql-spring-boot-3bis

 Expliquez.

Déploiement Maven

 vérifiez que le serveur de base de données MySQL est démaré et qu’une base de données nommée ‘formation’ (à créer , vide) existe.

 Lancez la commande : mvn spring-boot:run à partir du répertoire du projet

config-database-mysql-spring-boot-4

 

config-database-mysql-spring-boot-4bis-jpa

La dernière ligne de log indique que l’application est déployée

tutoriel-spring-boot-annotation-springbootapplication-3

 A ce stade, la base de données ne contient aucune table.

 Ajouter le code de la classe Formation suivante :

tutoriel-spring-boot-annotation-springbootapplication-5

 Arrêter et redéployer le projet avec mvn spring-boot:run

 Notez désormais la création de la table ‘formation’ dans la base de données

tutoriel-spring-boot-annotation-springbootapplication-jpa-demo-2

DAO Spring Data

 Analysez le code suivant, assoicé à l’interface du DAO permettant de réaliser des opréations de lecture, écriture, modification et suppression (CRUD) de formation en base de données .

tutoriel-spring-boot-annotation-springbootapplication-jpa-jpaRepository

 En utilisant l’API Spring Data, Expliquez le rôle de l’interface JPaRepository

QUESTION : Combien de méthodes sont disponibles dans JPaRepository ?

tutoriel-spring-boot-annotation-springbootapplication-jpa-jpaRepository-api-javadoc

 Qu’en est t’il de l’implémentation de cette interface ?

Paramétrage web : controlleur + écran

Les couche domaine métier (Formation.java) et Dao (FormationRepository) de notre projet sont en place.

Cependant , puisqu’il n’y a aucun controlleur Spring, l’accès à http://localhost:8080 donne une page d’erreur.

tutoriel-spring-boot-annotation-springbootapplication-4

Faisons évoluer le code de la classe GestionFormationsApplication initiale

tutoriel-spring-boot-annotation-springbootapplication-5-0-code

 Expliquez les nouvelles lignes lignes 5, 6, 8, 12, 13, 14, 15

 Arrêter (CTRL+C) et redéployez (mvn spring-boot:run)

 Accéder à nouveau à localhost://8080

tutoriel-spring-boot-annotation-springbootapplication-5-0-web

 Expliquez.

Désormais l’application est cablée coté JPA. et coté un minimum Web. Cependant l’application n’est pas fonctionnelle.

Il nous faut ajouter des écrans permettant l’interaction avec un utilisateur :

 un écran permettant. de saisir une formation (Thème, description),

 un écran permettant de lister les formations par thème

Nombreuses sont les technologies possible pour le front . Ces technologies devront interagir avec Spring à travers un controleur Spring.

Analysez le code suivant .

tutoriel-spring-boot-annotation-springbootapplication-controlleur-1

 Expliquez.

PROJET AVEC DOMAINE + DAO + CONTROLLEUR

gestionformations-v1-domaine-dao-controlleur

A VOUS DE JOUER : proposez désormais en utilisant les technologies HTML + JSP + JSTL le code des deux écrans présentés ci-dessus.

Paramétrage thymeleaf

Thymeleaf est un moteur de template XML / XHTML / HTML5 fait en java. Il est de plus en plus utilisé et s’intègre très bien avec Spring MVC.

logo-thymeleaf.png

Conclusion

Dans ce tutoriel vous avez créé une application Spring implicant du web, du Jpa ainsi que le moteur de template Thymeleaf.
Vous avez utilisé Spring Boot pour vous faciliter les taches de configuration.

Abidjan Java Meetup

Les tutoriels Spring Boot sont rédigés par l’antenne Objis Côte d’Ivoire, qui anime le rendez-vous mensuel de la communauté Java de Côte d’Ivoire : Abidjan Java Meetup, .

logo-Meetup.png

Dans le cadre du Meetup dédié à Spring Boot co-animé par Josh LONG, expert international Spring de chez Pivotal, et Serge Komi INNOCENT , consultant formateur Objis spécialiste Spring, nous avons proposé de partager aux développeurs Spring de Côte d’Ivoire et du monde entier notre savoir-faire sur Spring Boot.

Devenez certifié ‘Développeur Concepteur Java’

Exprimez-vous comme un développeur professionnel. Utilisez les bons mots au bon moment. Concevez et développez avec assurance des applications Java Web Mobile. Rassurez vos futurs employeurs et clients. Devenez Certifié ‘Développeur Concepteur Java’ Objis. + d’informations.

formation-java-distance-objis-3

2018-02-01T14:16:47+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java