Contactez-nous

Layouts et fragments avec Thymeleaf Layout Dialect

Apprenez à créer des mises en page réutilisables (layouts) et des sections de contenu modulaires (fragments) dans Thymeleaf en utilisant le Layout Dialect pour des applications web Spring Boot maintenables.

Le défi de la réutilisation dans les templates web

Lors du développement d'une application web avec plusieurs pages, on se retrouve très souvent avec des éléments structurels communs : un en-tête (header), un pied de page (footer), une barre de navigation, des menus latéraux, etc. Répéter ce code HTML dans chaque fichier de template est une mauvaise pratique : cela viole le principe DRY (Don't Repeat Yourself), rend la maintenance difficile (une modification doit être répercutée partout) et alourdit les fichiers.

Thymeleaf, le moteur de templates recommandé par Spring Boot, offre des mécanismes de base pour inclure des morceaux de code réutilisables via les attributs `th:insert` ou `th:replace`. Bien qu'utiles pour des composants plus petits (comme un bouton standard, une carte produit), ces attributs montrent leurs limites lorsqu'il s'agit de définir une structure de page complète (un layout) que plusieurs pages de contenu doivent "remplir".

Pour répondre spécifiquement à ce besoin de création de layouts complexes et héritables, la communauté a développé une extension très populaire pour Thymeleaf : le Thymeleaf Layout Dialect. Il introduit un ensemble d'attributs dédiés qui permettent de définir un template de base (le layout) et des pages de contenu qui viennent décorer ce layout en remplaçant des sections spécifiques (les fragments).

Le principe du Décorateur et les attributs clés (`layout:decorate`, `layout:fragment`)

Le Layout Dialect fonctionne sur le principe du pattern Décorateur. Vous créez un fichier HTML principal qui sert de "layout" ou de "décorateur". Ce fichier contient la structure HTML globale (, , , header, footer...) et définit des zones spécifiques remplaçables appelées fragments.

Ensuite, pour chaque page de contenu spécifique (par exemple, une page de détails produit, une page de profil utilisateur), vous créez un autre fichier HTML. Ce fichier de contenu va :

  1. Indiquer quel fichier layout il doit utiliser (décorer) grâce à l'attribut layout:decorate="~{chemin/vers/layout}", généralement placé sur la balise .
  2. Fournir le contenu spécifique pour les fragments définis dans le layout, en utilisant l'attribut layout:fragment="nomDuFragment" sur les balises correspondantes.

Dans le fichier layout, les zones remplaçables sont également marquées avec layout:fragment="nomDuFragment". Lorsque Thymeleaf traite une page de contenu, il charge le layout spécifié par `layout:decorate`, puis remplace les balises marquées avec `layout:fragment` dans le layout par les balises correspondantes (ayant le même nom de fragment) trouvées dans la page de contenu.

Exemple simple :

Fichier layout (src/main/resources/templates/layouts/mainLayout.html):




    
    Titre par Défaut
    


    

Mon Application Web

Contenu par défaut qui sera remplacé.

© 2024 CertiQuizz

Fichier de contenu (src/main/resources/templates/home.html):


 

    Page d'Accueil 


    

Bienvenue sur la page d'accueil !

Ceci est le contenu spécifique à la page d'accueil.

Lorsque la page home.html est rendue, le contenu de la balise

remplacera la balise
du layout, et le titre de la page sera également remplacé.

Définir et Remplacer les Fragments (`layout:fragment`, `layout:insert`, `th:replace`)

L'attribut layout:fragment="nomDuFragment" est donc central. Il sert à la fois dans le layout pour définir une zone remplaçable et dans la page de contenu pour fournir le remplacement. Il est important de noter que c'est la balise entière contenant l'attribut layout:fragment dans la page de contenu qui remplace la balise correspondante dans le layout.

Parfois, vous ne voulez pas remplacer la balise entière du layout, mais seulement insérer le contenu du fragment de la page de contenu *à l'intérieur* de la balise du layout. C'est utile pour des éléments comme </code> ou pour ajouter des classes CSS spécifiques à une page à un élément du layout. Pour cela, vous pouvez utiliser <b><code>layout:insert="~{::nomDuFragment}"</code></b> dans le layout. Dans ce cas, la page de contenu définit toujours le fragment avec <code>layout:fragment</code>, mais seul le contenu de cette balise sera utilisé.</p><p><b>Exemple avec <code>layout:insert</code> :</b></p><p>Layout (partie <code><head></code>) :</p><pre class="line-numbers"><code class="language-html"><head> <meta charset="UTF-8"> <!-- Utilise layout:insert pour le titre --> <title layout:insert="~{::pageTitle}>Titre par Défaut

Page de contenu (partie ) :


    
    Titre Spécifique de la Page
    
    
        
    

Ici, seul le texte "Titre Spécifique de la Page" sera inséré dans la balise </code> du layout, et le lien CSS sera ajouté à l'intérieur du <code><th:block></code> du layout.</p><p>N'oubliez pas que vous pouvez toujours utiliser les attributs Thymeleaf standard <b><code>th:replace</code></b> et <b><code>th:include</code></b> pour des fragments plus petits et autonomes (ex: un composant de navigation, un formulaire de recherche). <code>th:replace</code> remplace la balise hôte par le contenu du fragment, tandis que <code>th:include</code> insère le contenu du fragment à l'intérieur de la balise hôte. Ils peuvent être utilisés en complément du Layout Dialect pour structurer vos vues de manière modulaire.</p></section><section><h2 id="section-integration-dans-votre-projet-spring-boot">Intégration dans Votre Projet Spring Boot</h2><p>Le Thymeleaf Layout Dialect n'est pas inclus par défaut avec le starter Thymeleaf de Spring Boot. Vous devez l'ajouter explicitement comme dépendance dans votre projet.</p><p><b>Maven (pom.xml) :</b></p><pre class="line-numbers"><code class="language-xml"><dependency> <groupId>nz.net.ultraq.thymeleaf</groupId> <artifactId>thymeleaf-layout-dialect</artifactId> <!-- Vérifiez la dernière version compatible avec votre version de Thymeleaf/Spring Boot --> </dependency></code></pre><p><b>Gradle (build.gradle) :</b></p><pre class="line-numbers"><code class="language-groovy">implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' // Vérifiez la dernière version</code></pre><p>Une fois cette dépendance ajoutée, Spring Boot (via l'auto-configuration de Thymeleaf) détectera automatiquement le Layout Dialect et l'enregistrera auprès du moteur de templates Thymeleaf. Aucune configuration Java supplémentaire n'est généralement nécessaire. Vous pouvez alors commencer à utiliser les attributs <code>layout:*</code> dans vos templates HTML.</p></section><section><h2 id="section-avantages-et-conclusion">Avantages et Conclusion</h2><p>L'utilisation du Thymeleaf Layout Dialect apporte des avantages significatifs à vos projets web Spring Boot :</p><ul><li><b>Respect du principe DRY :</b> La structure commune de la page est définie une seule fois dans le fichier layout.</li><li><b>Maintenabilité améliorée :</b> Les modifications apportées au layout (ex: changement dans le header ou le footer) sont automatiquement répercutées sur toutes les pages qui l'utilisent.</li><li><b>Templates de contenu plus propres :</b> Les fichiers de contenu se concentrent uniquement sur la partie spécifique de la page, rendant le code plus lisible et plus concis.</li><li><b>Cohérence de l'interface utilisateur :</b> Assure une apparence et une structure cohérentes sur l'ensemble de l'application.</li></ul><p>En conclusion, le Thymeleaf Layout Dialect est un outil puissant et quasi indispensable pour tout développeur travaillant avec Thymeleaf et Spring Boot sur des applications web comportant plusieurs pages. Il fournit une solution élégante et efficace pour gérer les mises en page complexes, favorisant la création d'applications web bien structurées, maintenables et professionnelles.</p></section><div id="quizz"></div><p id="pagination"><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/syntaxe-de-base-de-thymeleaf-expressions-iterations-conditions" title="Syntaxe de base Thymeleaf : expressions, itérations et conditions expliquées" rel="prev">◄ Précédent</a> <a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-d-autres-moteurs-freemarker-mustache-apercu" title="Intégrer Freemarker et Mustache dans Spring Boot : Aperçu" rel="next">Suivant ►</a></p></div></div><input type="checkbox" id="rightSidebarToggle" class="rightSidebarToggle toggle"><label for="rightSidebarToggle" id="rightSidebarToggleButton" class="toggleBtn">く</label><nav id="summary" class="rightSidebar" aria-label="Table des matières" itemscope itemtype="http://schema.org/SiteNavigationElement"><h2>Table des matières</h2><meta itemprop="description" content="Table des matières pour Spring Boot : Le guide de référence complet"> <ol class="summary"><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-et-fondamentaux-de-spring-boot" itemprop="url" title="Introduction et fondamentaux de Spring Boot"><span itemprop="name">Introduction et fondamentaux de Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-l-ecosysteme-spring-et-spring-boot" itemprop="url" title="Introduction à l'écosystème Spring et Spring Boot"><span itemprop="name">Introduction à l'écosystème Spring et Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/historique-et-evolution-du-framework-spring" itemprop="url" title="Historique et évolution du framework Spring"><span itemprop="name">Historique et évolution du framework Spring</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/problematiques-resolues-par-spring-inversion-de-controle-injection-de-dependances" itemprop="url" title="Problématiques résolues par Spring (inversion de contrôle, injection de dépendances)"><span itemprop="name">Problématiques résolues par Spring (inversion de contrôle, injection de dépendances)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/presentation-de-spring-boot-objectifs-et-philosophie" itemprop="url" title="Présentation de Spring Boot : objectifs et philosophie"><span itemprop="name">Présentation de Spring Boot : objectifs et philosophie</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/avantages-de-spring-boot-auto-configuration-starters-opinionated-defaults" itemprop="url" title="Avantages de Spring Boot (auto-configuration, starters, opinionated defaults)"><span itemprop="name">Avantages de Spring Boot (auto-configuration, starters, opinionated defaults)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/positionnement-de-spring-boot-dans-l-ecosysteme-java-ee-jakarta-ee" itemprop="url" title="Positionnement de Spring Boot dans l'écosystème Java EE / Jakarta EE"><span itemprop="name">Positionnement de Spring Boot dans l'écosystème Java EE / Jakarta EE</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/apercu-des-modules-principaux-de-l-ecosysteme-spring-core-mvc-data-security-etc" itemprop="url" title="Aperçu des modules principaux de l'écosystème Spring (Core, MVC, Data, Security, etc.)"><span itemprop="name">Aperçu des modules principaux de l'écosystème Spring (Core, MVC, Data, Security, etc.)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mise-en-place-de-l-environnement-et-premiere-application" itemprop="url" title="Mise en place de l'environnement et première application"><span itemprop="name">Mise en place de l'environnement et première application</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/prerequis-installation-de-java-jdk-et-d-un-outil-de-build-maven-gradle" itemprop="url" title="Prérequis : Installation de Java (JDK) et d'un outil de build (Maven/Gradle)"><span itemprop="name">Prérequis : Installation de Java (JDK) et d'un outil de build (Maven/Gradle)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/choix-et-configuration-d-un-ide-intellij-idea-vs-code-eclipse" itemprop="url" title="Choix et configuration d'un IDE (IntelliJ IDEA, VS Code, Eclipse)"><span itemprop="name">Choix et configuration d'un IDE (IntelliJ IDEA, VS Code, Eclipse)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-spring-initializr-web-ou-via-ide-pour-generer-un-projet" itemprop="url" title="Utilisation de Spring Initializr (web ou via IDE) pour générer un projet"><span itemprop="name">Utilisation de Spring Initializr (web ou via IDE) pour générer un projet</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/structure-d-un-projet-spring-boot-typique" itemprop="url" title="Structure d'un projet Spring Boot typique"><span itemprop="name">Structure d'un projet Spring Boot typique</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/anatomie-de-la-classe-principale-springbootapplication" itemprop="url" title="Anatomie de la classe principale `@SpringBootApplication`"><span itemprop="name">Anatomie de la classe principale `@SpringBootApplication`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-d-un-premier-controleur-rest-simple-restcontroller-getmapping" itemprop="url" title="Création d'un premier contrôleur REST simple (`@RestController`, `@GetMapping`)"><span itemprop="name">Création d'un premier contrôleur REST simple (`@RestController`, `@GetMapping`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/lancement-de-l-application-via-ide-maven-gradle" itemprop="url" title="Lancement de l'application (via IDE, Maven/Gradle)"><span itemprop="name">Lancement de l'application (via IDE, Maven/Gradle)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/acceder-a-l-application-via-un-navigateur-ou-un-outil-comme-curl-postman" itemprop="url" title="Accéder à l'application via un navigateur ou un outil comme curl/Postman"><span itemprop="name">Accéder à l'application via un navigateur ou un outil comme curl/Postman</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/les-concepts-cles-de-spring-boot" itemprop="url" title="Les concepts clés de Spring Boot"><span itemprop="name">Les concepts clés de Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/les-starters-spring-boot-spring-boot-starter" itemprop="url" title="Les starters Spring Boot (`spring-boot-starter-*`)"><span itemprop="name">Les starters Spring Boot (`spring-boot-starter-*`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/le-mecanisme-d-auto-configuration-enableautoconfiguration" itemprop="url" title="Le mécanisme d'auto-configuration (`@EnableAutoConfiguration`)"><span itemprop="name">Le mécanisme d'auto-configuration (`@EnableAutoConfiguration`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/comprendre-les-configurations-conditionnelles-conditionalon" itemprop="url" title="Comprendre les configurations conditionnelles (`@ConditionalOn...`)"><span itemprop="name">Comprendre les configurations conditionnelles (`@ConditionalOn...`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/le-conteneur-ioc-de-spring-et-la-gestion-des-beans-component-service-repository-configuration" itemprop="url" title="Le conteneur IoC de Spring et la gestion des beans (`@Component`, `@Service`, `@Repository`, `@Configuration`)"><span itemprop="name">Le conteneur IoC de Spring et la gestion des beans (`@Component`, `@Service`, `@Repository`, `@Configuration`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/l-injection-de-dependances-autowired-injection-par-constructeur-setter-champ" itemprop="url" title="L'injection de dépendances (`@Autowired`, injection par constructeur, setter, champ)"><span itemprop="name">L'injection de dépendances (`@Autowired`, injection par constructeur, setter, champ)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/le-cycle-de-vie-des-beans-spring" itemprop="url" title="Le cycle de vie des beans Spring"><span itemprop="name">Le cycle de vie des beans Spring</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-boot-et-les-serveurs-embarques-tomcat-jetty-undertow" itemprop="url" title="Spring Boot et les serveurs embarqués (Tomcat, Jetty, Undertow)"><span itemprop="name">Spring Boot et les serveurs embarqués (Tomcat, Jetty, Undertow)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-et-gestion-des-proprietes" itemprop="url" title="Configuration et gestion des propriétés"><span itemprop="name">Configuration et gestion des propriétés</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/le-fichier-application-properties-ou-application-yml" itemprop="url" title="Le fichier `application.properties` ou `application.yml`"><span itemprop="name">Le fichier `application.properties` ou `application.yml`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/syntaxe-yaml-vs-properties" itemprop="url" title="Syntaxe YAML vs Properties"><span itemprop="name">Syntaxe YAML vs Properties</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/acceder-aux-proprietes-via-value" itemprop="url" title="Accéder aux propriétés via `@Value`"><span itemprop="name">Accéder aux propriétés via `@Value`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/liaison-de-type-securise-avec-configurationproperties" itemprop="url" title="Liaison de type sécurisé avec `@ConfigurationProperties`"><span itemprop="name">Liaison de type sécurisé avec `@ConfigurationProperties`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-profils-spring-profiles-active-profile" itemprop="url" title="Gestion des profils (`spring.profiles.active`, `@Profile`)"><span itemprop="name">Gestion des profils (`spring.profiles.active`, `@Profile`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/fichiers-de-configuration-specifiques-aux-profils-application-profile-properties" itemprop="url" title="Fichiers de configuration spécifiques aux profils (application-{profile}.properties)"><span itemprop="name">Fichiers de configuration spécifiques aux profils (application-{profile}.properties)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/priorite-des-sources-de-configuration-variables-d-environnement-arguments-de-ligne-de-commande-etc" itemprop="url" title="Priorité des sources de configuration (variables d'environnement, arguments de ligne de commande, etc.)"><span itemprop="name">Priorité des sources de configuration (variables d'environnement, arguments de ligne de commande, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-externalisee-avancee-spring-cloud-config-introduction" itemprop="url" title="Configuration externalisée avancée (Spring Cloud Config - introduction)"><span itemprop="name">Configuration externalisée avancée (Spring Cloud Config - introduction)</span></a></li></ol></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/developpement-d-applications-web-avec-spring-boot" itemprop="url" title="Développement d'applications web avec Spring Boot"><span itemprop="name">Développement d'applications web avec Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-d-api-restful-avec-spring-web-mvc" itemprop="url" title="Création d'API RESTful avec Spring Web MVC"><span itemprop="name">Création d'API RESTful avec Spring Web MVC</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/principes-fondamentaux-de-rest-ressources-verbes-http-statelessness" itemprop="url" title="Principes fondamentaux de REST (ressources, verbes HTTP, statelessness)"><span itemprop="name">Principes fondamentaux de REST (ressources, verbes HTTP, statelessness)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-restcontroller-et-des-annotations-de-mapping-requestmapping-getmapping-postmapping-putmapping-deletemapping-patchmapping" itemprop="url" title="Utilisation de `@RestController` et des annotations de mapping (`@RequestMapping`, `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`, `@PatchMapping`)"><span itemprop="name">Utilisation de `@RestController` et des annotations de mapping (`@RequestMapping`, `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`, `@PatchMapping`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-parametres-de-requete-requestparam-pathvariable-requestheader" itemprop="url" title="Gestion des paramètres de requête (`@RequestParam`, `@PathVariable`, `@RequestHeader`)"><span itemprop="name">Gestion des paramètres de requête (`@RequestParam`, `@PathVariable`, `@RequestHeader`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-du-corps-de-la-requete-requestbody" itemprop="url" title="Gestion du corps de la requête (`@RequestBody`)"><span itemprop="name">Gestion du corps de la requête (`@RequestBody`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-reponses-responseentity-codes-de-statut-http" itemprop="url" title="Gestion des réponses (`ResponseEntity`, codes de statut HTTP)"><span itemprop="name">Gestion des réponses (`ResponseEntity`, codes de statut HTTP)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/serialisation-et-deserialisation-json-xml-jackson-jaxb" itemprop="url" title="Sérialisation et désérialisation JSON/XML (Jackson/JAXB)"><span itemprop="name">Sérialisation et désérialisation JSON/XML (Jackson/JAXB)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-des-dto-data-transfer-objects" itemprop="url" title="Utilisation des DTO (Data Transfer Objects)"><span itemprop="name">Utilisation des DTO (Data Transfer Objects)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-versions-d-api" itemprop="url" title="Gestion des versions d'API"><span itemprop="name">Gestion des versions d'API</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/documentation-d-api-avec-openapi-swagger-springdoc-openapi-ui" itemprop="url" title="Documentation d'API avec OpenAPI/Swagger (`springdoc-openapi-ui`)"><span itemprop="name">Documentation d'API avec OpenAPI/Swagger (`springdoc-openapi-ui`)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/developpement-web-traditionnel-avec-spring-mvc" itemprop="url" title="Développement web traditionnel avec Spring MVC"><span itemprop="name">Développement web traditionnel avec Spring MVC</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-au-modele-mvc-modele-vue-controleur" itemprop="url" title="Introduction au modèle MVC (Modèle-Vue-Contrôleur)"><span itemprop="name">Introduction au modèle MVC (Modèle-Vue-Contrôleur)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-controller-difference-avec-restcontroller" itemprop="url" title="Utilisation de `@Controller` (différence avec `@RestController`)"><span itemprop="name">Utilisation de `@Controller` (différence avec `@RestController`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/transmission-de-donnees-a-la-vue-model-modelandview" itemprop="url" title="Transmission de données à la vue (`Model`, `ModelAndView`)"><span itemprop="name">Transmission de données à la vue (`Model`, `ModelAndView`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-formulaires-modelattribute" itemprop="url" title="Gestion des formulaires (`@ModelAttribute`)"><span itemprop="name">Gestion des formulaires (`@ModelAttribute`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/redirections-et-forwards" itemprop="url" title="Redirections et forwards"><span itemprop="name">Redirections et forwards</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-sessions-et-des-cookies" itemprop="url" title="Gestion des sessions et des cookies"><span itemprop="name">Gestion des sessions et des cookies</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/internationalisation-i18n-et-localisation-l10n" itemprop="url" title="Internationalisation (i18n) et localisation (L10n)"><span itemprop="name">Internationalisation (i18n) et localisation (L10n)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-vues-et-moteurs-de-templates" itemprop="url" title="Gestion des vues et moteurs de templates"><span itemprop="name">Gestion des vues et moteurs de templates</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-aux-moteurs-de-templates-cote-serveur" itemprop="url" title="Introduction aux moteurs de templates côté serveur"><span itemprop="name">Introduction aux moteurs de templates côté serveur</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-thymeleaf-spring-boot-starter-thymeleaf" itemprop="url" title="Intégration de Thymeleaf (`spring-boot-starter-thymeleaf`)"><span itemprop="name">Intégration de Thymeleaf (`spring-boot-starter-thymeleaf`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/syntaxe-de-base-de-thymeleaf-expressions-iterations-conditions" itemprop="url" title="Syntaxe de base de Thymeleaf (expressions, itérations, conditions)"><span itemprop="name">Syntaxe de base de Thymeleaf (expressions, itérations, conditions)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/layouts-et-fragments-avec-thymeleaf-layout-dialect" itemprop="url" title="Layouts et fragments avec Thymeleaf Layout Dialect"><span itemprop="name">Layouts et fragments avec Thymeleaf Layout Dialect</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-d-autres-moteurs-freemarker-mustache-apercu" itemprop="url" title="Intégration avec d'autres moteurs (Freemarker, Mustache - aperçu)"><span itemprop="name">Intégration avec d'autres moteurs (Freemarker, Mustache - aperçu)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/servir-du-contenu-statique-css-javascript-images" itemprop="url" title="Servir du contenu statique (CSS, JavaScript, images)"><span itemprop="name">Servir du contenu statique (CSS, JavaScript, images)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-webjars-pour-les-dependances-frontend" itemprop="url" title="Intégration avec WebJars pour les dépendances frontend"><span itemprop="name">Intégration avec WebJars pour les dépendances frontend</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/validation-et-gestion-des-erreurs" itemprop="url" title="Validation et gestion des erreurs"><span itemprop="name">Validation et gestion des erreurs</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/validation-des-donnees-d-entree-avec-bean-validation-jsr-380" itemprop="url" title="Validation des données d'entrée avec Bean Validation (JSR 380)"><span itemprop="name">Validation des données d'entrée avec Bean Validation (JSR 380)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/annotations-de-validation-notnull-size-pattern-etc" itemprop="url" title="Annotations de validation (`@NotNull`, `@Size`, `@Pattern`, etc.)"><span itemprop="name">Annotations de validation (`@NotNull`, `@Size`, `@Pattern`, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/validation-dans-les-controleurs-valid-bindingresult" itemprop="url" title="Validation dans les contrôleurs (`@Valid`, `BindingResult`)"><span itemprop="name">Validation dans les contrôleurs (`@Valid`, `BindingResult`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-contraintes-de-validation-personnalisees" itemprop="url" title="Création de contraintes de validation personnalisées"><span itemprop="name">Création de contraintes de validation personnalisées</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-globale-des-exceptions-avec-controlleradvice-et-exceptionhandler" itemprop="url" title="Gestion globale des exceptions avec `@ControllerAdvice` et `@ExceptionHandler`"><span itemprop="name">Gestion globale des exceptions avec `@ControllerAdvice` et `@ExceptionHandler`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/personnalisation-des-reponses-d-erreur" itemprop="url" title="Personnalisation des réponses d'erreur"><span itemprop="name">Personnalisation des réponses d'erreur</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-erreurs-specifiques-a-spring-boot-page-d-erreur-whitelabel" itemprop="url" title="Gestion des erreurs spécifiques à Spring Boot (page d'erreur Whitelabel)"><span itemprop="name">Gestion des erreurs spécifiques à Spring Boot (page d'erreur Whitelabel)</span></a></li></ol></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/acces-et-persistance-des-donnees" itemprop="url" title="Accès et persistance des données"><span itemprop="name">Accès et persistance des données</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-spring-data" itemprop="url" title="Introduction à Spring Data"><span itemprop="name">Introduction à Spring Data</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/philosophie-et-objectifs-de-spring-data" itemprop="url" title="Philosophie et objectifs de Spring Data"><span itemprop="name">Philosophie et objectifs de Spring Data</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/le-concept-de-repository" itemprop="url" title="Le concept de Repository"><span itemprop="name">Le concept de Repository</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/architecture-modulaire-de-spring-data-jpa-jdbc-mongodb-redis-etc" itemprop="url" title="Architecture modulaire de Spring Data (JPA, JDBC, MongoDB, Redis, etc.)"><span itemprop="name">Architecture modulaire de Spring Data (JPA, JDBC, MongoDB, Redis, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/avantages-de-l-abstraction-fournie-par-spring-data" itemprop="url" title="Avantages de l'abstraction fournie par Spring Data"><span itemprop="name">Avantages de l'abstraction fournie par Spring Data</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-spring-data-jpa-avec-des-bases-relationnelles" itemprop="url" title="Utilisation de Spring Data JPA avec des bases relationnelles"><span itemprop="name">Utilisation de Spring Data JPA avec des bases relationnelles</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-de-la-source-de-donnees-datasource" itemprop="url" title="Configuration de la source de données (`DataSource`)"><span itemprop="name">Configuration de la source de données (`DataSource`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-hibernate-implementation-jpa-par-defaut" itemprop="url" title="Intégration avec Hibernate (implémentation JPA par défaut)"><span itemprop="name">Intégration avec Hibernate (implémentation JPA par défaut)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/definition-des-entites-jpa-entity-id-generatedvalue-etc" itemprop="url" title="Définition des entités JPA (`@Entity`, `@Id`, `@GeneratedValue`, etc.)"><span itemprop="name">Définition des entités JPA (`@Entity`, `@Id`, `@GeneratedValue`, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mapping-des-relations-onetoone-onetomany-manytoone-manytomany" itemprop="url" title="Mapping des relations (`@OneToOne`, `@OneToMany`, `@ManyToOne`, `@ManyToMany`)"><span itemprop="name">Mapping des relations (`@OneToOne`, `@OneToMany`, `@ManyToOne`, `@ManyToMany`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-d-interfaces-repository-jparepository-crudrepository" itemprop="url" title="Création d'interfaces Repository (`JpaRepository`, `CrudRepository`)"><span itemprop="name">Création d'interfaces Repository (`JpaRepository`, `CrudRepository`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/methodes-de-requete-derivees-query-methods" itemprop="url" title="Méthodes de requête dérivées (Query Methods)"><span itemprop="name">Méthodes de requête dérivées (Query Methods)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/requetes-personnalisees-avec-query-jpql-et-sql-natif" itemprop="url" title="Requêtes personnalisées avec `@Query` (JPQL et SQL natif)"><span itemprop="name">Requêtes personnalisées avec `@Query` (JPQL et SQL natif)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/pagination-et-tri-pageable-sort" itemprop="url" title="Pagination et tri (`Pageable`, `Sort`)"><span itemprop="name">Pagination et tri (`Pageable`, `Sort`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/projections-spring-data" itemprop="url" title="Projections Spring Data"><span itemprop="name">Projections Spring Data</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/audit-jpa-createddate-lastmodifieddate-etc" itemprop="url" title="Audit JPA (`@CreatedDate`, `@LastModifiedDate`, etc.)"><span itemprop="name">Audit JPA (`@CreatedDate`, `@LastModifiedDate`, etc.)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-spring-data-jdbc" itemprop="url" title="Utilisation de Spring Data JDBC"><span itemprop="name">Utilisation de Spring Data JDBC</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/quand-utiliser-spring-data-jdbc-vs-jpa" itemprop="url" title="Quand utiliser Spring Data JDBC vs JPA ?"><span itemprop="name">Quand utiliser Spring Data JDBC vs JPA ?</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-et-dependances-spring-boot-starter-data-jdbc" itemprop="url" title="Configuration et dépendances (`spring-boot-starter-data-jdbc`)"><span itemprop="name">Configuration et dépendances (`spring-boot-starter-data-jdbc`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mapping-d-entites-simplifie-avec-spring-data-jdbc" itemprop="url" title="Mapping d'entités simplifié avec Spring Data JDBC"><span itemprop="name">Mapping d'entités simplifié avec Spring Data JDBC</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-repositories-jdbc" itemprop="url" title="Création de repositories JDBC"><span itemprop="name">Création de repositories JDBC</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-requetes-et-des-relations" itemprop="url" title="Gestion des requêtes et des relations"><span itemprop="name">Gestion des requêtes et des relations</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/comparaison-des-approches-performance-complexite" itemprop="url" title="Comparaison des approches (performance, complexité)"><span itemprop="name">Comparaison des approches (performance, complexité)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-des-bases-de-donnees-nosql" itemprop="url" title="Intégration avec des bases de données NoSQL"><span itemprop="name">Intégration avec des bases de données NoSQL</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-aux-bases-nosql-document-cle-valeur-colonne-graphe" itemprop="url" title="Introduction aux bases NoSQL (Document, Clé-Valeur, Colonne, Graphe)"><span itemprop="name">Introduction aux bases NoSQL (Document, Clé-Valeur, Colonne, Graphe)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-data-mongodb-configuration-et-utilisation" itemprop="url" title="Spring Data MongoDB : configuration et utilisation"><span itemprop="name">Spring Data MongoDB : configuration et utilisation</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mapping-de-documents-document-id" itemprop="url" title="Mapping de documents (`@Document`, `@Id`)"><span itemprop="name">Mapping de documents (`@Document`, `@Id`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-mongorepository-et-mongotemplate" itemprop="url" title="Utilisation de `MongoRepository` et `MongoTemplate`"><span itemprop="name">Utilisation de `MongoRepository` et `MongoTemplate`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-data-redis-configuration-et-cas-d-usage-cache-sessions" itemprop="url" title="Spring Data Redis : configuration et cas d'usage (cache, sessions)"><span itemprop="name">Spring Data Redis : configuration et cas d'usage (cache, sessions)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-redisrepository-et-redistemplate" itemprop="url" title="Utilisation de `RedisRepository` et `RedisTemplate`"><span itemprop="name">Utilisation de `RedisRepository` et `RedisTemplate`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/apercu-d-autres-integrations-cassandra-neo4j-elasticsearch" itemprop="url" title="Aperçu d'autres intégrations (Cassandra, Neo4j, Elasticsearch)"><span itemprop="name">Aperçu d'autres intégrations (Cassandra, Neo4j, Elasticsearch)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/transactions-et-gestion-de-la-concurrence" itemprop="url" title="Transactions et gestion de la concurrence"><span itemprop="name">Transactions et gestion de la concurrence</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/concepts-acid-et-gestion-transactionnelle" itemprop="url" title="Concepts ACID et gestion transactionnelle"><span itemprop="name">Concepts ACID et gestion transactionnelle</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-declarative-des-transactions-avec-transactional" itemprop="url" title="Gestion déclarative des transactions avec `@Transactional`"><span itemprop="name">Gestion déclarative des transactions avec `@Transactional`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/propagation-des-transactions-propagation" itemprop="url" title="Propagation des transactions (`Propagation`)"><span itemprop="name">Propagation des transactions (`Propagation`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/niveaux-d-isolation-isolation" itemprop="url" title="Niveaux d'isolation (`Isolation`)"><span itemprop="name">Niveaux d'isolation (`Isolation`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-programmatique-des-transactions-transactiontemplate-platformtransactionmanager" itemprop="url" title="Gestion programmatique des transactions (`TransactionTemplate`, `PlatformTransactionManager`)"><span itemprop="name">Gestion programmatique des transactions (`TransactionTemplate`, `PlatformTransactionManager`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/verrouillage-optimiste-et-pessimiste-avec-jpa-version" itemprop="url" title="Verrouillage optimiste et pessimiste avec JPA (`@Version`)"><span itemprop="name">Verrouillage optimiste et pessimiste avec JPA (`@Version`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-transactions-distribuees-jta-apercu" itemprop="url" title="Gestion des transactions distribuées (JTA - aperçu)"><span itemprop="name">Gestion des transactions distribuées (JTA - aperçu)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/migration-de-base-de-donnees-avec-flyway-ou-liquibase" itemprop="url" title="Migration de base de données avec Flyway ou Liquibase"><span itemprop="name">Migration de base de données avec Flyway ou Liquibase</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/importance-de-la-gestion-des-schemas-de-base-de-donnees" itemprop="url" title="Importance de la gestion des schémas de base de données"><span itemprop="name">Importance de la gestion des schémas de base de données</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-flyway-avec-spring-boot" itemprop="url" title="Intégration de Flyway avec Spring Boot"><span itemprop="name">Intégration de Flyway avec Spring Boot</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/structure-des-scripts-de-migration-sql-convention-de-nommage" itemprop="url" title="Structure des scripts de migration SQL (convention de nommage)"><span itemprop="name">Structure des scripts de migration SQL (convention de nommage)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-liquibase-avec-spring-boot" itemprop="url" title="Intégration de Liquibase avec Spring Boot"><span itemprop="name">Intégration de Liquibase avec Spring Boot</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/format-des-changelogs-liquibase-xml-yaml-json-sql" itemprop="url" title="Format des 'changelogs' Liquibase (XML, YAML, JSON, SQL)"><span itemprop="name">Format des 'changelogs' Liquibase (XML, YAML, JSON, SQL)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/execution-automatique-des-migrations-au-demarrage" itemprop="url" title="Exécution automatique des migrations au démarrage"><span itemprop="name">Exécution automatique des migrations au démarrage</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/bonnes-pratiques-pour-les-migrations-de-base-de-donnees" itemprop="url" title="Bonnes pratiques pour les migrations de base de données"><span itemprop="name">Bonnes pratiques pour les migrations de base de données</span></a></li></ol></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securisation-des-applications-spring-boot" itemprop="url" title="Sécurisation des applications Spring Boot"><span itemprop="name">Sécurisation des applications Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-spring-security" itemprop="url" title="Introduction à Spring Security"><span itemprop="name">Introduction à Spring Security</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/principes-fondamentaux-de-la-securite-authentification-autorisation-protection-csrf-etc" itemprop="url" title="Principes fondamentaux de la sécurité (authentification, autorisation, protection CSRF, etc.)"><span itemprop="name">Principes fondamentaux de la sécurité (authentification, autorisation, protection CSRF, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/architecture-de-spring-security-filtres-contexte-de-securite" itemprop="url" title="Architecture de Spring Security (filtres, contexte de sécurité)"><span itemprop="name">Architecture de Spring Security (filtres, contexte de sécurité)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-spring-boot-starter-security" itemprop="url" title="Intégration de `spring-boot-starter-security`"><span itemprop="name">Intégration de `spring-boot-starter-security`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-de-base-par-defaut-formulaire-de-login-utilisateur-en-memoire" itemprop="url" title="Configuration de base par défaut (formulaire de login, utilisateur en mémoire)"><span itemprop="name">Configuration de base par défaut (formulaire de login, utilisateur en mémoire)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/personnalisation-de-la-configuration-de-securite-websecurityconfigureradapter-ou-securityfilterchain-bean" itemprop="url" title="Personnalisation de la configuration de sécurité (`WebSecurityConfigurerAdapter` ou `SecurityFilterChain` bean)"><span itemprop="name">Personnalisation de la configuration de sécurité (`WebSecurityConfigurerAdapter` ou `SecurityFilterChain` bean)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mecanismes-d-authentification" itemprop="url" title="Mécanismes d'authentification"><span itemprop="name">Mécanismes d'authentification</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-basee-sur-un-formulaire-form-login" itemprop="url" title="Authentification basée sur un formulaire (Form Login)"><span itemprop="name">Authentification basée sur un formulaire (Form Login)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-http-basic" itemprop="url" title="Authentification HTTP Basic"><span itemprop="name">Authentification HTTP Basic</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-basee-sur-une-base-de-donnees-jdbc-jpa" itemprop="url" title="Authentification basée sur une base de données (JDBC/JPA)"><span itemprop="name">Authentification basée sur une base de données (JDBC/JPA)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/implementation-de-userdetailsservice" itemprop="url" title="Implémentation de `UserDetailsService`"><span itemprop="name">Implémentation de `UserDetailsService`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-mots-de-passe-encodage-avec-passwordencoder-bcrypt" itemprop="url" title="Gestion des mots de passe (encodage avec `PasswordEncoder` - bcrypt)"><span itemprop="name">Gestion des mots de passe (encodage avec `PasswordEncoder` - bcrypt)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-via-ldap" itemprop="url" title="Authentification via LDAP"><span itemprop="name">Authentification via LDAP</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-via-oauth2-openid-connect-connexion-via-google-facebook-etc" itemprop="url" title="Authentification via OAuth2 / OpenID Connect (connexion via Google, Facebook, etc.)"><span itemprop="name">Authentification via OAuth2 / OpenID Connect (connexion via Google, Facebook, etc.)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/authentification-multi-facteurs-mfa-concepts-et-integration" itemprop="url" title="Authentification multi-facteurs (MFA - concepts et intégration)"><span itemprop="name">Authentification multi-facteurs (MFA - concepts et intégration)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-autorisations" itemprop="url" title="Gestion des autorisations"><span itemprop="name">Gestion des autorisations</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/autorisation-basee-sur-les-roles-hasrole-hasanyrole" itemprop="url" title="Autorisation basée sur les rôles (`hasRole`, `hasAnyRole`)"><span itemprop="name">Autorisation basée sur les rôles (`hasRole`, `hasAnyRole`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/autorisation-basee-sur-les-permissions-autorites-hasauthority" itemprop="url" title="Autorisation basée sur les permissions/autorités (`hasAuthority`)"><span itemprop="name">Autorisation basée sur les permissions/autorités (`hasAuthority`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-des-regles-d-acces-via-httpsecurity-antmatchers-mvcmatchers" itemprop="url" title="Configuration des règles d'accès via `HttpSecurity` (antMatchers, mvcMatchers)"><span itemprop="name">Configuration des règles d'accès via `HttpSecurity` (antMatchers, mvcMatchers)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securite-au-niveau-des-methodes-avec-preauthorize-postauthorize-secured-rolesallowed" itemprop="url" title="Sécurité au niveau des méthodes avec `@PreAuthorize`, `@PostAuthorize`, `@Secured`, `@RolesAllowed`"><span itemprop="name">Sécurité au niveau des méthodes avec `@PreAuthorize`, `@PostAuthorize`, `@Secured`, `@RolesAllowed`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-des-expressions-spel-spring-expression-language-pour-des-regles-complexes" itemprop="url" title="Utilisation des expressions SpEL (Spring Expression Language) pour des règles complexes"><span itemprop="name">Utilisation des expressions SpEL (Spring Expression Language) pour des règles complexes</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-permissions-fines-access-control-lists-acl" itemprop="url" title="Gestion des permissions fines (Access Control Lists - ACL)"><span itemprop="name">Gestion des permissions fines (Access Control Lists - ACL)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securite-des-api-rest" itemprop="url" title="Sécurité des API REST"><span itemprop="name">Sécurité des API REST</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/desactivation-de-la-protection-csrf-pour-les-api-stateless" itemprop="url" title="Désactivation de la protection CSRF pour les API stateless"><span itemprop="name">Désactivation de la protection CSRF pour les API stateless</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securisation-avec-jwt-json-web-tokens" itemprop="url" title="Sécurisation avec JWT (JSON Web Tokens)"><span itemprop="name">Sécurisation avec JWT (JSON Web Tokens)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/generation-et-validation-des-tokens-jwt" itemprop="url" title="Génération et validation des tokens JWT"><span itemprop="name">Génération et validation des tokens JWT</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-jwt-avec-spring-security-filtres-d-authentification" itemprop="url" title="Intégration de JWT avec Spring Security (filtres d'authentification)"><span itemprop="name">Intégration de JWT avec Spring Security (filtres d'authentification)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-du-rafraichissement-des-tokens-refresh-tokens" itemprop="url" title="Gestion du rafraîchissement des tokens (refresh tokens)"><span itemprop="name">Gestion du rafraîchissement des tokens (refresh tokens)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securisation-avec-oauth2-resource-server" itemprop="url" title="Sécurisation avec OAuth2 (Resource Server)"><span itemprop="name">Sécurisation avec OAuth2 (Resource Server)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/validation-des-tokens-oauth2-introspection-jwk" itemprop="url" title="Validation des tokens OAuth2 (introspection, JWK)"><span itemprop="name">Validation des tokens OAuth2 (introspection, JWK)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-api-keys" itemprop="url" title="Utilisation de API Keys"><span itemprop="name">Utilisation de API Keys</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/bonnes-pratiques-de-securite-et-sujets-avances" itemprop="url" title="Bonnes pratiques de sécurité et sujets avancés"><span itemprop="name">Bonnes pratiques de sécurité et sujets avancés</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/protection-contre-les-attaques-courantes-xss-csrf-injection-sql" itemprop="url" title="Protection contre les attaques courantes (XSS, CSRF, Injection SQL)"><span itemprop="name">Protection contre les attaques courantes (XSS, CSRF, Injection SQL)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-de-https-ssl" itemprop="url" title="Configuration de HTTPS/SSL"><span itemprop="name">Configuration de HTTPS/SSL</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-en-tetes-de-securite-content-security-policy-hsts-x-frame-options" itemprop="url" title="Gestion des en-têtes de sécurité (Content Security Policy, HSTS, X-Frame-Options)"><span itemprop="name">Gestion des en-têtes de sécurité (Content Security Policy, HSTS, X-Frame-Options)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/securite-des-mots-de-passe-stockage-politiques" itemprop="url" title="Sécurité des mots de passe (stockage, politiques)"><span itemprop="name">Sécurité des mots de passe (stockage, politiques)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-secrets-et-cles-vault-aws-secrets-manager-introduction" itemprop="url" title="Gestion des secrets et clés (Vault, AWS Secrets Manager - introduction)"><span itemprop="name">Gestion des secrets et clés (Vault, AWS Secrets Manager - introduction)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/audit-de-securite-et-logging" itemprop="url" title="Audit de sécurité et logging"><span itemprop="name">Audit de sécurité et logging</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-de-securite-avec-spring-security-test" itemprop="url" title="Tests de sécurité avec Spring Security Test"><span itemprop="name">Tests de sécurité avec Spring Security Test</span></a></li></ol></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/preparation-a-la-production-et-exploitation" itemprop="url" title="Préparation à la production et exploitation"><span itemprop="name">Préparation à la production et exploitation</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-dans-spring-boot" itemprop="url" title="Tests dans Spring Boot"><span itemprop="name">Tests dans Spring Boot</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/importance-et-types-de-tests-unitaires-integration-end-to-end" itemprop="url" title="Importance et types de tests (unitaires, intégration, end-to-end)"><span itemprop="name">Importance et types de tests (unitaires, intégration, end-to-end)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-spring-boot-starter-test-junit-5-mockito-assertj-spring-test" itemprop="url" title="Utilisation de `spring-boot-starter-test` (JUnit 5, Mockito, AssertJ, Spring Test)"><span itemprop="name">Utilisation de `spring-boot-starter-test` (JUnit 5, Mockito, AssertJ, Spring Test)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-unitaires-de-composants-spring-services-repositories" itemprop="url" title="Tests unitaires de composants Spring (services, repositories)"><span itemprop="name">Tests unitaires de composants Spring (services, repositories)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-mockito-pour-mocker-les-dependances-mockbean" itemprop="url" title="Utilisation de Mockito pour mocker les dépendances (`@MockBean`)"><span itemprop="name">Utilisation de Mockito pour mocker les dépendances (`@MockBean`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-d-integration-avec-springboottest" itemprop="url" title="Tests d'intégration avec `@SpringBootTest`"><span itemprop="name">Tests d'intégration avec `@SpringBootTest`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-des-controleurs-web-avec-mockmvc" itemprop="url" title="Tests des contrôleurs web avec `MockMvc`"><span itemprop="name">Tests des contrôleurs web avec `MockMvc`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-des-clients-rest-avec-resttemplate-ou-webclient-restclienttest" itemprop="url" title="Tests des clients REST avec `RestTemplate` ou `WebClient` (`@RestClientTest`)"><span itemprop="name">Tests des clients REST avec `RestTemplate` ou `WebClient` (`@RestClientTest`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-de-la-couche-persistance-datajpatest-datajdbctest-datamongotest" itemprop="url" title="Tests de la couche persistance (`@DataJpaTest`, `@DataJdbcTest`, `@DataMongoTest`)"><span itemprop="name">Tests de la couche persistance (`@DataJpaTest`, `@DataJdbcTest`, `@DataMongoTest`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-bases-de-donnees-en-memoire-h2-ou-testcontainers-pour-les-tests-d-integration" itemprop="url" title="Utilisation de bases de données en mémoire (H2) ou Testcontainers pour les tests d'intégration"><span itemprop="name">Utilisation de bases de données en mémoire (H2) ou Testcontainers pour les tests d'intégration</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-de-configuration-avec-testpropertysource" itemprop="url" title="Tests de configuration avec `@TestPropertySource`"><span itemprop="name">Tests de configuration avec `@TestPropertySource`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tests-des-slices-couches-specifiques-de-l-application" itemprop="url" title="Tests des slices (couches spécifiques) de l'application"><span itemprop="name">Tests des slices (couches spécifiques) de l'application</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-boot-actuator-surveillance-et-metriques" itemprop="url" title="Spring Boot Actuator : surveillance et métriques"><span itemprop="name">Spring Boot Actuator : surveillance et métriques</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-spring-boot-actuator-spring-boot-starter-actuator" itemprop="url" title="Introduction à Spring Boot Actuator (`spring-boot-starter-actuator`)"><span itemprop="name">Introduction à Spring Boot Actuator (`spring-boot-starter-actuator`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-des-endpoints-actuator-exposition-securite" itemprop="url" title="Configuration des endpoints Actuator (exposition, sécurité)"><span itemprop="name">Configuration des endpoints Actuator (exposition, sécurité)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/endpoints-courants-health-info-metrics-env-loggers-beans-mappings" itemprop="url" title="Endpoints courants (`health`, `info`, `metrics`, `env`, `loggers`, `beans`, `mappings`)"><span itemprop="name">Endpoints courants (`health`, `info`, `metrics`, `env`, `loggers`, `beans`, `mappings`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/personnalisation-de-l-endpoint-info" itemprop="url" title="Personnalisation de l'endpoint `/info`"><span itemprop="name">Personnalisation de l'endpoint `/info`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/verifications-de-sante-healthindicator-personnalises" itemprop="url" title="Vérifications de santé (`HealthIndicator` personnalisés)"><span itemprop="name">Vérifications de santé (`HealthIndicator` personnalisés)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/collecte-et-exposition-de-metriques-micrometer" itemprop="url" title="Collecte et exposition de métriques (Micrometer)"><span itemprop="name">Collecte et exposition de métriques (Micrometer)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-des-systemes-de-monitoring-prometheus-grafana-datadog" itemprop="url" title="Intégration avec des systèmes de monitoring (Prometheus, Grafana, Datadog)"><span itemprop="name">Intégration avec des systèmes de monitoring (Prometheus, Grafana, Datadog)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/suivi-distribue-distributed-tracing-avec-spring-cloud-sleuth-micrometer-tracing-introduction" itemprop="url" title="Suivi distribué (Distributed Tracing) avec Spring Cloud Sleuth / Micrometer Tracing (introduction)"><span itemprop="name">Suivi distribué (Distributed Tracing) avec Spring Cloud Sleuth / Micrometer Tracing (introduction)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/acces-aux-endpoints-via-http-ou-jmx" itemprop="url" title="Accès aux endpoints via HTTP ou JMX"><span itemprop="name">Accès aux endpoints via HTTP ou JMX</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/packaging-et-deploiement-d-applications" itemprop="url" title="Packaging et déploiement d'applications"><span itemprop="name">Packaging et déploiement d'applications</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-jar-executables-fat-jars" itemprop="url" title="Création de JAR exécutables (fat JARs)"><span itemprop="name">Création de JAR exécutables (fat JARs)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-war-traditionnels-pour-deploiement-sur-serveur-d-applications-externe" itemprop="url" title="Création de WAR traditionnels pour déploiement sur serveur d'applications externe"><span itemprop="name">Création de WAR traditionnels pour déploiement sur serveur d'applications externe</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/optimisation-de-la-taille-et-du-demarrage-layers-maven-gradle-aot-graalvm-native-image-introduction" itemprop="url" title="Optimisation de la taille et du démarrage (layers Maven/Gradle, AOT, GraalVM Native Image - introduction)"><span itemprop="name">Optimisation de la taille et du démarrage (layers Maven/Gradle, AOT, GraalVM Native Image - introduction)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/deploiement-simple-sur-une-machine-virtuelle" itemprop="url" title="Déploiement simple sur une machine virtuelle"><span itemprop="name">Déploiement simple sur une machine virtuelle</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-des-processus-systemd-supervisor" itemprop="url" title="Gestion des processus (systemd, supervisor)"><span itemprop="name">Gestion des processus (systemd, supervisor)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/deploiement-sur-des-plateformes-cloud-paas-comme-heroku-cloud-foundry" itemprop="url" title="Déploiement sur des plateformes Cloud (PaaS comme Heroku, Cloud Foundry)"><span itemprop="name">Déploiement sur des plateformes Cloud (PaaS comme Heroku, Cloud Foundry)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/deploiement-sur-aws-gcp-azure-concepts-generaux" itemprop="url" title="Déploiement sur AWS, GCP, Azure (concepts généraux)"><span itemprop="name">Déploiement sur AWS, GCP, Azure (concepts généraux)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-docker-et-conteneurisation" itemprop="url" title="Intégration avec Docker et conteneurisation"><span itemprop="name">Intégration avec Docker et conteneurisation</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-aux-conteneurs-et-a-docker" itemprop="url" title="Introduction aux conteneurs et à Docker"><span itemprop="name">Introduction aux conteneurs et à Docker</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/ecriture-d-un-dockerfile-pour-une-application-spring-boot" itemprop="url" title="Ecriture d'un `Dockerfile` pour une application Spring Boot"><span itemprop="name">Ecriture d'un `Dockerfile` pour une application Spring Boot</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/bonnes-pratiques-pour-la-creation-d-images-docker-java-multi-stage-builds-jre-vs-jdk" itemprop="url" title="Bonnes pratiques pour la création d'images Docker Java (multi-stage builds, JRE vs JDK)"><span itemprop="name">Bonnes pratiques pour la création d'images Docker Java (multi-stage builds, JRE vs JDK)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-des-plugins-maven-gradle-pour-construire-des-images-docker-jib-spring-boot-build-plugin" itemprop="url" title="Utilisation des plugins Maven/Gradle pour construire des images Docker (Jib, Spring Boot Build Plugin)"><span itemprop="name">Utilisation des plugins Maven/Gradle pour construire des images Docker (Jib, Spring Boot Build Plugin)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-de-la-configuration-dans-les-conteneurs-variables-d-environnement-volumes" itemprop="url" title="Gestion de la configuration dans les conteneurs (variables d'environnement, volumes)"><span itemprop="name">Gestion de la configuration dans les conteneurs (variables d'environnement, volumes)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/orchestration-de-conteneurs-avec-docker-compose-pour-le-developpement-et-les-tests" itemprop="url" title="Orchestration de conteneurs avec Docker Compose (pour le développement et les tests)"><span itemprop="name">Orchestration de conteneurs avec Docker Compose (pour le développement et les tests)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-kubernetes-pour-le-deploiement-en-production-concepts" itemprop="url" title="Introduction à Kubernetes pour le déploiement en production (concepts)"><span itemprop="name">Introduction à Kubernetes pour le déploiement en production (concepts)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/logging-et-gestion-des-logs" itemprop="url" title="Logging et gestion des logs"><span itemprop="name">Logging et gestion des logs</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/frameworks-de-logging-supportes-logback-log4j2-jul" itemprop="url" title="Frameworks de logging supportés (Logback, Log4j2, JUL)"><span itemprop="name">Frameworks de logging supportés (Logback, Log4j2, JUL)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-du-logging-via-application-properties-yml" itemprop="url" title="Configuration du logging via `application.properties`/`yml`"><span itemprop="name">Configuration du logging via `application.properties`/`yml`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-avancee-via-fichiers-dedies-logback-spring-xml-log4j2-spring-xml" itemprop="url" title="Configuration avancée via fichiers dédiés (logback-spring.xml, log4j2-spring.xml)"><span itemprop="name">Configuration avancée via fichiers dédiés (logback-spring.xml, log4j2-spring.xml)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/niveaux-de-log-et-gestion-dynamique-via-actuator" itemprop="url" title="Niveaux de log et gestion dynamique via Actuator"><span itemprop="name">Niveaux de log et gestion dynamique via Actuator</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/formatage-des-logs-patterns-json" itemprop="url" title="Formatage des logs (patterns, JSON)"><span itemprop="name">Formatage des logs (patterns, JSON)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/appenders-console-file-rollingfile" itemprop="url" title="Appenders (Console, File, RollingFile)"><span itemprop="name">Appenders (Console, File, RollingFile)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/logging-structure-pour-l-agregation-centralisee-elk-stack-splunk" itemprop="url" title="Logging structuré pour l'agrégation centralisée (ELK stack, Splunk)"><span itemprop="name">Logging structuré pour l'agrégation centralisée (ELK stack, Splunk)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-mdc-mapped-diagnostic-context-pour-le-suivi-des-requetes" itemprop="url" title="Utilisation de MDC (Mapped Diagnostic Context) pour le suivi des requêtes"><span itemprop="name">Utilisation de MDC (Mapped Diagnostic Context) pour le suivi des requêtes</span></a></li></ol></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/sujets-avances-et-ecosysteme-spring" itemprop="url" title="Sujets avancés et écosystème Spring"><span itemprop="name">Sujets avancés et écosystème Spring</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/programmation-asynchrone-et-reactive-avec-spring-webflux" itemprop="url" title="Programmation asynchrone et réactive avec Spring WebFlux"><span itemprop="name">Programmation asynchrone et réactive avec Spring WebFlux</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-la-programmation-reactive-manifeste-reactif" itemprop="url" title="Introduction à la programmation réactive (manifeste réactif)"><span itemprop="name">Introduction à la programmation réactive (manifeste réactif)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/project-reactor-mono-et-flux" itemprop="url" title="Project Reactor : `Mono` et `Flux`"><span itemprop="name">Project Reactor : `Mono` et `Flux`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-webflux-alternative-reactive-a-spring-mvc" itemprop="url" title="Spring WebFlux : alternative réactive à Spring MVC"><span itemprop="name">Spring WebFlux : alternative réactive à Spring MVC</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-controleurs-reactifs-annotation-based-et-functional-endpoints" itemprop="url" title="Création de contrôleurs réactifs (annotation-based et functional endpoints)"><span itemprop="name">Création de contrôleurs réactifs (annotation-based et functional endpoints)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-de-webclient-pour-les-appels-http-reactifs" itemprop="url" title="Utilisation de `WebClient` pour les appels HTTP réactifs"><span itemprop="name">Utilisation de `WebClient` pour les appels HTTP réactifs</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/acces-aux-donnees-reactif-spring-data-r2dbc-mongodb-reactive-redis-reactive" itemprop="url" title="Accès aux données réactif (Spring Data R2DBC, MongoDB Reactive, Redis Reactive)"><span itemprop="name">Accès aux données réactif (Spring Data R2DBC, MongoDB Reactive, Redis Reactive)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/server-sent-events-sse" itemprop="url" title="Server-Sent Events (SSE)"><span itemprop="name">Server-Sent Events (SSE)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/websockets-avec-spring" itemprop="url" title="WebSockets avec Spring"><span itemprop="name">WebSockets avec Spring</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/quand-choisir-webflux-vs-web-mvc" itemprop="url" title="Quand choisir WebFlux vs Web MVC ?"><span itemprop="name">Quand choisir WebFlux vs Web MVC ?</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/methodes-asynchrones-avec-async-et-completablefuture-alternative-non-reactive" itemprop="url" title="Méthodes asynchrones avec `@Async` et `CompletableFuture` (alternative non-réactive)"><span itemprop="name">Méthodes asynchrones avec `@Async` et `CompletableFuture` (alternative non-réactive)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-de-systemes-de-messagerie-messaging" itemprop="url" title="Intégration de systèmes de messagerie (Messaging)"><span itemprop="name">Intégration de systèmes de messagerie (Messaging)</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/concepts-de-messagerie-point-a-point-publish-subscribe" itemprop="url" title="Concepts de messagerie (point-à-point, publish-subscribe)"><span itemprop="name">Concepts de messagerie (point-à-point, publish-subscribe)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-jms-spring-boot-starter-activemq-spring-boot-starter-artemis" itemprop="url" title="Spring JMS (`spring-boot-starter-activemq`, `spring-boot-starter-artemis`)"><span itemprop="name">Spring JMS (`spring-boot-starter-activemq`, `spring-boot-starter-artemis`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/envoi-et-reception-de-messages-avec-jmstemplate-et-jmslistener" itemprop="url" title="Envoi et réception de messages avec `JmsTemplate` et `@JmsListener`"><span itemprop="name">Envoi et réception de messages avec `JmsTemplate` et `@JmsListener`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-amqp-spring-boot-starter-amqp-pour-rabbitmq" itemprop="url" title="Spring AMQP (`spring-boot-starter-amqp` pour RabbitMQ)"><span itemprop="name">Spring AMQP (`spring-boot-starter-amqp` pour RabbitMQ)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/envoi-et-reception-de-messages-avec-rabbittemplate-et-rabbitlistener" itemprop="url" title="Envoi et réception de messages avec `RabbitTemplate` et `@RabbitListener`"><span itemprop="name">Envoi et réception de messages avec `RabbitTemplate` et `@RabbitListener`</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-for-apache-kafka-spring-kafka" itemprop="url" title="Spring for Apache Kafka (`spring-kafka`)"><span itemprop="name">Spring for Apache Kafka (`spring-kafka`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/production-et-consommation-de-messages-kafka-kafkatemplate-kafkalistener" itemprop="url" title="Production et consommation de messages Kafka (`KafkaTemplate`, `@KafkaListener`)"><span itemprop="name">Production et consommation de messages Kafka (`KafkaTemplate`, `@KafkaListener`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/spring-cloud-stream-abstraction-pour-les-systemes-de-messagerie-introduction" itemprop="url" title="Spring Cloud Stream (abstraction pour les systèmes de messagerie - introduction)"><span itemprop="name">Spring Cloud Stream (abstraction pour les systèmes de messagerie - introduction)</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/developpement-de-microservices-avec-spring-cloud-introduction" itemprop="url" title="Développement de microservices avec Spring Cloud (Introduction)"><span itemprop="name">Développement de microservices avec Spring Cloud (Introduction)</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/principes-de-l-architecture-microservices" itemprop="url" title="Principes de l'architecture microservices"><span itemprop="name">Principes de l'architecture microservices</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/role-de-spring-cloud-dans-l-ecosysteme-microservices" itemprop="url" title="Rôle de Spring Cloud dans l'écosystème microservices"><span itemprop="name">Rôle de Spring Cloud dans l'écosystème microservices</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-centralisee-avec-spring-cloud-config-server" itemprop="url" title="Configuration centralisée avec Spring Cloud Config Server"><span itemprop="name">Configuration centralisée avec Spring Cloud Config Server</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/decouverte-de-services-service-discovery-avec-eureka-ou-consul" itemprop="url" title="Découverte de services (Service Discovery) avec Eureka ou Consul"><span itemprop="name">Découverte de services (Service Discovery) avec Eureka ou Consul</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/appels-inter-services-avec-des-clients-rest-declaratifs-openfeign" itemprop="url" title="Appels inter-services avec des clients REST déclaratifs (OpenFeign)"><span itemprop="name">Appels inter-services avec des clients REST déclaratifs (OpenFeign)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tolerance-aux-pannes-avec-resilience4j-circuit-breaker" itemprop="url" title="Tolérance aux pannes avec Resilience4j (Circuit Breaker)"><span itemprop="name">Tolérance aux pannes avec Resilience4j (Circuit Breaker)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/passerelle-d-api-api-gateway-avec-spring-cloud-gateway" itemprop="url" title="Passerelle d'API (API Gateway) avec Spring Cloud Gateway"><span itemprop="name">Passerelle d'API (API Gateway) avec Spring Cloud Gateway</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/suivi-distribue-avec-micrometer-tracing-anciennement-spring-cloud-sleuth-et-zipkin-jaeger" itemprop="url" title="Suivi distribué avec Micrometer Tracing (anciennement Spring Cloud Sleuth) et Zipkin/Jaeger"><span itemprop="name">Suivi distribué avec Micrometer Tracing (anciennement Spring Cloud Sleuth) et Zipkin/Jaeger</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mise-en-cache-caching" itemprop="url" title="Mise en cache (Caching)"><span itemprop="name">Mise en cache (Caching)</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/principes-et-avantages-de-la-mise-en-cache" itemprop="url" title="Principes et avantages de la mise en cache"><span itemprop="name">Principes et avantages de la mise en cache</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/abstraction-de-cache-de-spring-enablecaching" itemprop="url" title="Abstraction de cache de Spring (`@EnableCaching`)"><span itemprop="name">Abstraction de cache de Spring (`@EnableCaching`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/annotations-de-cache-cacheable-cacheput-cacheevict-caching" itemprop="url" title="Annotations de cache (`@Cacheable`, `@CachePut`, `@CacheEvict`, `@Caching`)"><span itemprop="name">Annotations de cache (`@Cacheable`, `@CachePut`, `@CacheEvict`, `@Caching`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/fournisseurs-de-cache-supportes-ehcache-caffeine-redis-hazelcast" itemprop="url" title="Fournisseurs de cache supportés (EhCache, Caffeine, Redis, Hazelcast)"><span itemprop="name">Fournisseurs de cache supportés (EhCache, Caffeine, Redis, Hazelcast)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-d-un-gestionnaire-de-cache-cachemanager" itemprop="url" title="Configuration d'un gestionnaire de cache (`CacheManager`)"><span itemprop="name">Configuration d'un gestionnaire de cache (`CacheManager`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/strategies-de-cache-et-invalidation" itemprop="url" title="Stratégies de cache et invalidation"><span itemprop="name">Stratégies de cache et invalidation</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/mise-en-cache-conditionnelle" itemprop="url" title="Mise en cache conditionnelle"><span itemprop="name">Mise en cache conditionnelle</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/taches-planifiees-et-traitement-par-lots" itemprop="url" title="Tâches planifiées et traitement par lots"><span itemprop="name">Tâches planifiées et traitement par lots</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/planification-de-taches-avec-scheduled-enablescheduling" itemprop="url" title="Planification de tâches avec `@Scheduled` (`@EnableScheduling`)"><span itemprop="name">Planification de tâches avec `@Scheduled` (`@EnableScheduling`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-des-pools-de-threads-pour-les-taches-planifiees" itemprop="url" title="Configuration des pools de threads pour les tâches planifiées"><span itemprop="name">Configuration des pools de threads pour les tâches planifiées</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/introduction-a-spring-batch-spring-boot-starter-batch" itemprop="url" title="Introduction à Spring Batch (`spring-boot-starter-batch`)"><span itemprop="name">Introduction à Spring Batch (`spring-boot-starter-batch`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/concepts-cles-de-spring-batch-job-step-itemreader-itemprocessor-itemwriter" itemprop="url" title="Concepts clés de Spring Batch (Job, Step, ItemReader, ItemProcessor, ItemWriter)"><span itemprop="name">Concepts clés de Spring Batch (Job, Step, ItemReader, ItemProcessor, ItemWriter)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/configuration-et-lancement-de-jobs-batch" itemprop="url" title="Configuration et lancement de jobs Batch"><span itemprop="name">Configuration et lancement de jobs Batch</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/gestion-de-l-etat-et-redemarrage-des-jobs-jobrepository" itemprop="url" title="Gestion de l'état et redémarrage des jobs (JobRepository)"><span itemprop="name">Gestion de l'état et redémarrage des jobs (JobRepository)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/cas-d-usage-typiques-du-traitement-par-lots" itemprop="url" title="Cas d'usage typiques du traitement par lots"><span itemprop="name">Cas d'usage typiques du traitement par lots</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/extensibilite-et-personnalisation-avancee" itemprop="url" title="Extensibilité et personnalisation avancée"><span itemprop="name">Extensibilité et personnalisation avancée</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-ses-propres-starters-spring-boot" itemprop="url" title="Création de ses propres starters Spring Boot"><span itemprop="name">Création de ses propres starters Spring Boot</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/creation-de-ses-propres-auto-configurations" itemprop="url" title="Création de ses propres auto-configurations"><span itemprop="name">Création de ses propres auto-configurations</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/personnalisation-du-contexte-d-application-spring-applicationcontextinitializer-environmentpostprocessor" itemprop="url" title="Personnalisation du contexte d'application Spring (`ApplicationContextInitializer`, `EnvironmentPostProcessor`)"><span itemprop="name">Personnalisation du contexte d'application Spring (`ApplicationContextInitializer`, `EnvironmentPostProcessor`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/utilisation-des-evenements-spring-applicationevent-eventlistener" itemprop="url" title="Utilisation des événements Spring (`ApplicationEvent`, `@EventListener`)"><span itemprop="name">Utilisation des événements Spring (`ApplicationEvent`, `@EventListener`)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/programmation-orientee-aspect-aop-avec-spring-aop" itemprop="url" title="Programmation orientée aspect (AOP) avec Spring AOP"><span itemprop="name">Programmation orientée aspect (AOP) avec Spring AOP</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/integration-avec-d-autres-bibliotheques-et-frameworks-java" itemprop="url" title="Intégration avec d'autres bibliothèques et frameworks Java"><span itemprop="name">Intégration avec d'autres bibliothèques et frameworks Java</span></a></li></ol></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/migration-et-perspectives" itemprop="url" title="Migration et perspectives"><span itemprop="name">Migration et perspectives</span></a><ol><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/migration-d-une-application-spring-framework-classique-vers-spring-boot" itemprop="url" title="Migration d'une application Spring Framework classique vers Spring Boot"><span itemprop="name">Migration d'une application Spring Framework classique vers Spring Boot</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/tendances-actuelles-graalvm-native-image-serverless-kotlin" itemprop="url" title="Tendances actuelles (GraalVM Native Image, Serverless, Kotlin)"><span itemprop="name">Tendances actuelles (GraalVM Native Image, Serverless, Kotlin)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/ressources-pour-aller-plus-loin-documentation-officielle-communaute-blogs" itemprop="url" title="Ressources pour aller plus loin (documentation officielle, communauté, blogs)"><span itemprop="name">Ressources pour aller plus loin (documentation officielle, communauté, blogs)</span></a></li><li><a href="/fr/cours/programmation/spring-boot/spring-boot-le-guide-de-reference-complet/conclusion-et-resume-des-acquis" itemprop="url" title="Conclusion et résumé des acquis"><span itemprop="name">Conclusion et résumé des acquis</span></a></li></ol></li></ol></li> </ol></nav></main><footer id="footer" aria-labelledby="footer-heading"><div class="footer-main"><div><h2 id="footer-heading">Pied de page du site CertiQuizz</h2><p class="footer-logo"><img src="/favicon.svg" alt="Logo CertiQuizz" width="40" height="40"><span>ertiQuizz</span></p><p class="footer-description">Votre plateforme de microlearning :<br>1. Testez vos connaissances<br>2. Apprenez de nouvelles compétences<br>3. Excellez dans votre parcours</p><p><a href="/fr/quiz/classement/" title="Classement des membres">🏆 Classement des membres</a></p></div><nav class="footer-navigation" aria-label="Navigation secondaire"><h3>Navigation</h3><ul><li><a href="/fr/quiz-qcm-certification" title="A propos de CertiQuizz, la plateforme de microlearning">A propos</a></li><li><a href="/fr/faq" title="FAQ">FAQ</a></li><li><a href="/fr/contact" title="Contact">Contact</a></li></ul></nav><nav><h3>Légal</h3><ul><li><a href="/fr/mentions-legales" title="Mentions légales">Mentions légales</a></li><li><a href="/fr/politique-de-confidentialite" title="Politique de confidentilité">Politique de confidentilité</a></li><li><a href="/fr/cgu" title="Conditions Générales d'Utilisation">Conditions Générales d'Utilisation</a></li></ul></nav><nav><h3>Suivez-nous</h3><ul><li><a href="/fr/newsletter/" title="S'abonner à la newsletter">Newsletter</a></li></ul></nav></div><div class="footer-bottom"><p>© <span id="copyYear">2025</span> CertiQuizz. Tous droits réservés.</p><p>Conçu avec un objectif d'<a href="/fr/eco-responsabilite-et-performance" title="Eco-conception">éco-conception</a></p></div></footer><div id="overlayBody"></div><div id="overlay2Body"></div><script>/*<![CDATA[*/let loaded=false,f=()=>{loaded=true;let tag = _new("link");tag.rel = "stylesheet";tag.href = "/css/prism.css";_doc.head.appendChild(tag);tag = _new("script");tag.src = "/js/prism.js";tag.async = true;_doc.head.appendChild(tag);ajax({targetId: "quizz",url: "/fr/course/quizz,event",data: {courseId: 1353,name: "layouts-et-fragments-avec-thymeleaf-layout-dialect"},success: _event.onSuccess,error: _event.onError});initPageSummary("pageBody","pageSummary");activeMenu(window.location.pathname,"homeLink");initBreadcrumb();gtag("G-Y5V4QB3XL0")};document.getElementById("corejs").onload=f;window.addEventListener("load",()=>{!loaded&&f();});(async ()=>{const mb=document.getElementById("modeBtn"),dm="dark-mode",lm="light-mode",mk="mode",am=localStorage.getItem(mk),d=document.documentElement.classList;function cm(m1){const m2=m1!=dm?dm:lm,c=mb.children;d.add(m1);d.remove(m2);c[0].innerHTML=c[0].innerHTML.replace(m1,{[dm]:lm,[lm]:dm}[m1]);c[1].textContent={[dm]:"Clair",[lm]:"Sombre"}[m1];localStorage.setItem(mk,m1);}cm(am?am:dm);mb.addEventListener("click",(e)=>{e.preventDefault();cm(d.contains(dm)?lm:dm)});})();/*]]>*/</script></body></html>