Bon produit
DOMINIQUE SJava Spring Le socle technique des applications Jakarta EE (5e édition)
1 avis
Ce livre apporte les éléments clés pour se repérer dans les différentes technologies utilisées dans les projets basés sur Spring. Il prend en compte les différences de configuration liées aux versions de Spring (en version 6.1 au moment de l’écriture) et se base sur des exemples concrets d’utilisation. Il permet au lecteur d’être très rapidement autonome sur un projet d’entreprise qui utilise Spring, que ce soit au début d’un nouveau projet ou pour maintenir un projet existant :...
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Expert
- Nombre de pages 680 pages
- Parution juin 2024
- Niveau Expert
- Parution juin 2024
Ce livre apporte les éléments clés pour se repérer dans les différentes technologies utilisées dans les projets basés sur Spring. Il prend en compte les différences de configuration liées aux versions de Spring (en version 6.1 au moment de l’écriture) et se base sur des exemples concrets d’utilisation. Il permet au lecteur d’être très rapidement autonome sur un projet d’entreprise qui utilise Spring, que ce soit au début d’un nouveau projet ou pour maintenir un projet existant : compréhension du noyau, accès aux données, maîtrise de la couche web. Des connaissances sur le développement Java et notamment le développement d’applications web sont un prérequis indispensable pour tirer le meilleur parti possible du livre.
L’auteur présente tout d’abord les éléments simples et courants de Spring (la configuration, les contextes, les librairies tiers) et explique ensuite certains aspects plus complexes que l’on rencontre souvent dans les projets (Ressources, Bindeurs, Validateurs, Convertisseurs et Tests). La programmation par aspects est expérimentée, les applications web Spring MVC et les Web Services sont détaillés avec les tests unitaires associés. L’auteur présente les nouveautés Spring Boot, Kotlin avec Angular, les applications orientées messages et Spring Batch, une introduction à Reactor et Web- Flux et une description de la partie Spring d’un projet généré à partir de JHipster afin d’illustrer une mise en œuvre très actuelle ainsi qu’une présentation de l’utilisation de GraphQL avec Spring.
Tout au long des chapitres, l’auteur s’appuie sur des exemples fonctionnels afin de permettre l’expérimentation au plus tôt par le lecteur. Dans ce but, des éléments sont en téléchargement sur le site www.editions-eni.fr.
L’auteur présente tout d’abord les éléments simples et courants de Spring (la configuration, les contextes, les librairies tiers) et explique ensuite certains aspects plus complexes que l’on rencontre souvent dans les projets (Ressources, Bindeurs, Validateurs, Convertisseurs et Tests). La programmation par aspects est expérimentée, les applications web Spring MVC et les Web Services sont détaillés avec les tests unitaires associés. L’auteur présente les nouveautés Spring Boot, Kotlin avec Angular, les applications orientées messages et Spring Batch, une introduction à Reactor et Web- Flux et une description de la partie Spring d’un projet généré à partir de JHipster afin d’illustrer une mise en œuvre très actuelle ainsi qu’une présentation de l’utilisation de GraphQL avec Spring.
Tout au long des chapitres, l’auteur s’appuie sur des exemples fonctionnels afin de permettre l’expérimentation au plus tôt par le lecteur. Dans ce but, des éléments sont en téléchargement sur le site www.editions-eni.fr.
Téléchargements
Avant-propos
- Préambule
- Introduction
- Organisation du livre
- Public visé
- Pourquoi Spring ?
- Prérequis pour aborder Spring et Jakarta EE
Éléments constitutifs du framework
- Introduction
- Historique
- Utilité de Spring dans un projet
- Vue d'ensemble et sujets abordés dans l'ouvrage
- 1. Modules Spring
- 2. Sujets abordés
- 3. Gestion des dépendances Maven
- Compléments
- Points clés
Spring et les design patterns
- Introduction
- Singleton en Java
- 1. Préoccupation
- 2. Solution Spring
- 3. Exemple
- Inversion de contrôle
- Façade
- Fabrique
- Décorateur
- Proxy
- Modèle Vue Contrôleur (MVC)
- Templates
- Stratégie
- Points clés
Rappels sur les éléments externes à Spring
- Codage equals et hashCode
- 1. Description de la problématique
- 2. Mise en œuvre
- Log4j, SLF4J et Logback
- Bases de données H2 et HSQLDB
- 1. Description de la problématique
- 2. Mise en œuvre
- a. Installation
- b. Configuration du POM
- c. Connexion à la base de données enutilisant JDBC
- d. Utiliser un listener de servlet pour démarreret arrêter la base
Le conteneur Spring
- Introduction
- Origines
- Modules fondamentaux
- 1. Singleton et prototype
- 2. Objets fondamentaux du package core
- 3. PropertyValue(s)
- 4. BranWrapper
- 5. BeanFactory et ApplicationContext
- 6. Interface BeanDefinition
- 7. PropertySourcesPlaceholderConfigurer
- 8. ApplicationContext
- 9. Relations entre le bean et sa BeanFactory ou son contexte
- Configuration des beans
- 1. Configuration par un fichier XML
- 2. Mapping via le constructeur en XML
- 3. Configuration par annotations
- 4. Injecter les beans configurés
- 5. Configuration par lambdas
- 6. Comparaison des méthodes d’instanciation
- 7. Autres annotations de configuration
- a. Annotation @Primary
- b. Annotations @Profile et @Conditional
- 1. Utilisation de l’ExpressionParser
- 2. L’EvaluationContext
- 3. Utilisation avec @Value
- 4. Web services
- a. Via une servlet
- b. Serveur intégré
Configuration avancée Java Spring
- Introduction
- Fichiers de ressources
- 1. Fichiers de ressources standards
- 2. Fichiers de ressources chargés via le contexteSpring
- 3. Fichiers de ressources chargés via un serviceResourceLoaderAware
- a. Programme principal
- b. Service ResourceLoaderAware
- 1. Built-in converters
- a. Pour les types standards
- b. Pour les tableaux et les listes
- c. Pour les énumérations
- d. Pour les objets en général
- a. Classe StringToUtilisateurConverterFactory
- b. Classe UtilisateurToStringConverterFactory
- c. Classe LesConversionsAvecFactories
- a. Classe CarteDeCredit
- b. Classe CarteDeCreditParser
- c. Classe CarteDeCreditPrinter
- d. Classe CarteDeCreditFormatter
- e. Classe LesConversionsFormateursEx2
- 1. Classe LesBeanWrappers
- 2. Classe UtilisateurValidator
Programmation orientée aspect avec Spring
- Introduction
- Pourquoi l’AOP ?
- Concepts d’AOP
- Limites de Spring AOP et utilisation d’AspectJ
- 1. Activation du support
- 2. Activation de @AspectJ avec configurationXML
- 3. Activation de @AspectJ avec configurationJava
- 4. Déclaration d’un aspect
- 5. Déclaration d’un pointcut
- 6. Déclaration des greffons simples
- 7. Types génériques
- 8. Détermination de noms d’arguments
- 9. Ordre d’appel des greffons interceptant lepoint de jonction
- 10. Injection
- 11. Mécanisme des proxies
- 12. Face cachée des proxies en AOP
- API bas niveau pour Spring AOP
- 1. Interface PointCut
- 2. Interface ClassFilter
- 3. Interface MethodMatcher
- Pour aller plus loin
- 1. Librairie Java jcabi-aspects
- 2. Métriques AspectJ
- Points clés
Partie back de l’application
- Introduction
- Éléments fondamentaux
- 1. Stratégies d’héritage
- a. Objet par table
- b. Table par hiérarchie de classe
- c. Table par sous-classe
- d. Table par classe concrète
- e. Bilan de ces stratégies
- 1. Stratégies d’héritage
- 2. Type des relations entre les classes
- 1. Modèle en couche
- 2. Configuration d’une entité de lacouche domaine
- a. Mapping many-to-one et one-to-many
- b. Types de données
- a. DAO (Data Access Object)
- b. Repository
- c. Autres considérations
- d. Exemple de Repository
- e. EntityManager
- a. Utilisation
- b. Exemple Matchers
- c. API Fluente
- a. Requêtes JPQL personnalisées
- b. Requêtes SQL natives et paramètresnommés
- c. Requêtes de mise à jour
- d. Autres considérations
Spring et le NoSQL
- Introduction
- Modèles de données
- 1. Bases de données clé/valeur
- 2. Bases de données document
- 3. Bases de données de graphes
- 4. Bases de données de colonnes larges
- 5. Bases de données orientées objets
- Principes des bases de données
- Pourquoi et quand utiliser une base NoSQL ?
- Spring et le NoSQL
- Cache de données
- Cache simple
- Cacher des données avec Geode
- Geode en tant que base de données NoSQL
- Redis en mode autonome
- MongoDB
- 1. MongoDB avec Spring Boot
- 2. MongoDB avec une API REST
- Points clés
Les intergiciels à messages (MOM)
- Introduction
- 1. Fonctionnalités de base
- 2. Exemples de middlewares de messagerie
- 3. Avantages des MOM
- 4. Modèle de file d’attente (queue)
- 5. Modèle de publication-abonnement (Pub/Sub)
- Implémentations open source
- Implémentations propriétaires
- Cas d’utilisation
- JMS et ActiveMQ
- RabbitMQ
- 1. Spring AMQP et RabbitMQ
- 2. Exemple RabbitMQ
- Points clés
Spring dans un contexte web
- Introduction
- Serveurs de pages
- Contrôleur
- 1. Fonctionnement du contrôleur
- 2. Gestion des requêtes HTTP
- a. @RequestMapping
- b. @GetMapping
- c. @PostMapping
- d. @PutMapping, @DeleteMapping et @PatchMapping
- e. Redirections
- f. Gestion des modèles
- 3. Interprétation des données de requête
- a. Paramètres d’URL (@PathVariable)
- b. Paramètres de requête (@RequestParam)
- c. Corps de requête (@RequestBody)
- d. En-tête de requête (@RequestHeader)
- e. Cookies (@CookieValue)
- f. Objets de formulaire (@ModelAttribute)
- g. Paramètres de session et de modèle
- 4. Traitement de la logique métier
- a. Appel de services métier
- b. Récupération et persistance desdonnées
- c. Gestion des transactions
- d. Validation des données
- e. Traitement asynchrone et opérations longues
- f. Gestion des erreurs et exceptions
- 5. Préparation de la réponse
- a. Sélection d’une vue
- b. Renvoi de données JSON/XML
- c. Utilisation de ResponseEntity
- 6. Renvoi de la réponse au client
- a. Vue Rendue
- b. Redirection
- c. Données JSON/XML (API REST)
- 1. Gestion des exceptions
- a. @ExceptionHandler et @ControllerAdvice
- b. Personnalisation des réponses d’erreur
- c. Exemple d’utilisation d’@ExceptionHandler
- 1. Annotation @ResponseBody par défaut
- 2. Pas de vues ou de rendu de page
- 3. XML ou JSON dans la réponse
- a. Définir le type de média dans lesannotations de mapping
- b. Utiliser la négociation de contenu
- c. Configurer les convertisseurs de message HTTP
- d. Exemple de négociation de contenu
- 1. RestTemplate
- 2. WebClient
- a. Feign Client
- b. Apache HttpClient
- 1. Authentification
- a. Authentification basée sur un formulaire
- b. Authentification via des jetons (comme JWT)
- a. Autorisations au niveau des méthodes
- b. Autorisations au niveau des requêtes
- c. AuthorizationFilter
- d. Définir l’autorisation d’un point d’accès
- e. Autorisations au niveau des objets métier
- 1. Simplification de la création de liens hypertexte
- 2. Création de réponses REST conformes
- 1. Outils
- a. Swagger
- b. OpenAPITools
- c. Pour le générateur Swagger
- d. Pour le générateur OpenAPITools
- e. Personnalisation des générateurs
Les tests et Spring
- Introduction
- Objets mock(és)
- 1. Mocks spécialisés pour les classesd’environnement
- 2. Classes de support
- a. Utilités générales
- b. Spring MVC
- 3. Tests d’intégration
- a. Vue d’ensemble
- b. Mise en cache du contexte de test
- c. Tests back et front
- d. Tests des parties back
- e. Bases de données
- 4. Librairies de tests Spring
- 5. Annotations
- a. @TestPropertySource
- b. Interface TestExecutionListener
- c. Tests Beans Spring avec JUnit
- 6. Utilisation avec JUnit 5
- a. Utiliser @ExtendWith
- b. Utilisation de @EnabledIf et @DisabledIf
- c. Annotation @Timeout
- d. Annotation @RepeatedTest
- e. Autres considérations
- 1. @ContextConfiguration
- 2. @DirtiesContext
- 3. @WebAppConfiguration
- 4. Héritage dans la configuration des contextes
- 5. Prise en compte des profils d’environnement
- 6. Hiérarchie des contextes de tests
- 7. Scope session lors d’un test de requête
- 8. Transactions
- a. Configuration d’un gestionnaire de transactions
- b. Démonstration de toutes les annotations liées à latransaction
- a. Exemple avec @Sql
- b. @Sql, @SqlConfig et @SqlGroup
Spring Batch
- Introduction
- Architecture d’un batch
- Description des éléments Spring Batch
- 1. Versions
- 2. Nouveautés de la version 5.1.0
- 3. Migrer depuis Spring Batch 4
- Exemple Spring Batch version 5
- 1. Dépendance Maven
- 2. Lanceur du batch
- 3. Configuration du batch
- 4. Classe Departement
- 5. ItemProcessor
- Données traitées
- Batchs fictifs
- Évolutions des batchs
- Points clés
Spring Boot
- Introduction
- Avantages de Spring Boot
- 1. Configuration automatisée
- 2. Démarrage rapide
- 3. Moins de code de configuration
- 4. Support intégré pour microservices
- 5. Facilité de déploiement
- 6. Pourquoi choisir un serveur embarqué ?
- 7. Gestion facile des dépendances
- 8. Principaux starters
- Facilitations des développements
- Détails sur l’autoconfiguration Spring Boot
- Personnalisation de la bannière
- Événements d’applications
- 1. ApplicationStartingEvent
- 2. ApplicationContextInitializedEvent
- 3. ApplicationEnvironmentPreparedEvent
- 4. ApplicationPreparedEvent
- 5. ApplicationStartedEvent
- 6. ApplicationReadyEvent
- 7. ApplicationFailedEvent
- 8. Interception des événements
- Récupération des arguments de la ligne de commande
- 1. CommandLineRunner
- 2. ApplicationRunner
- 3. Configuration de l’application et des profils
- a. application.properties
- b. application.yml
- c. Choix de la structure du fichier
- 1. Logs en couleur
- 2. Choix du type de logs
- 3. Événements
- 1. Séquence de lancement
- 2. Chargement du BootstrapContext
- 3. Mise en place des listeners
- a. Starting : ApplicationStartingEvent
- b. ApplicationEnvironmentPreparedEvent
- c. EnvironmentPostProcessorApplicationListener
Introduction à Spring Reactor et Spring Webflux
- Introduction
- Spring Reactor
- 1. Présentation
- 2. RxJava 3
- 3. Utilisation de Reactor Core
- a. Les threads
- b. Les FutureTask
- c. Le CompletableFuture
- d. Les threads virtuels
- e. Flux et Mono
- f. Opérateurs de collecte
- g. Ajout de délais
- 4. Tests
- a. Vérifications avec StepVerifier
- b. Émissions manuelles avec TestPublisher
- 1. Définition du terme réactif
- 2. Couches réactives
- a. La couche contrôleur
- b. La couche des services
- c. La couche repository
- d. Repository reactif R2DBC
- e. Seul pour H2
- f. Avec Spring Data et H2
- g. Programmation fonctionnelle
- h. Repository Spring Data
- 1. Tests unitaires
- a. Tests unitaires avec des applications réactives
- b. Utilisation de MockWebServer
Spring et Kotlin
- Introduction
- Framework Spring
- 1. Sécurité avec la nullabilité
- 2. Classes et Interfaces
- 3. Annotations
- 4. DSL de définition de Beans
- 5. Web
- a. DSL Web Router
- b. DSL MockMvc
- 6. Coroutines Kotlin
- a. Dépendances
- b. Framework réactif et Coroutines
- c. Contrôleurs
- d. WebFlux.fn
- e. Transactions
- 1. Utilisation d’instances de classes immuables pourla persistance
- 2. Détails sur les tests
- 3. Spécificités Spring boot
- a. Support Kotlin
- b. Le runApplication
Utilisation de GraphQL
- Introduction
- Schémas GraphQL
- 1. Types d’objets et champs
- 2. Arguments
- 3. Types scalaires
- 4. Types énumérés
- Queries et mutations
- 1. Requête (query)
- 2. Mutations
- Utilisation de Spring Boot
- 1. Création du schéma
- 2. Création du modèle et du repository
- Query, mutation et mapping
- 1. @SchemaMapping
- 2. @QueryMapping
- 3. @MutationMapping
- Tests de l’API
- 1. Utilisation de Querydsl
- 2. Gestion des erreurs
- 3. Mise en cache des requêtes
- Utilisation de GraphiQL
- Points clés
Application Spring Angular
- Introduction
- La partie backend
- 1. Classes de domaine
- 2. Repositories
- 3. Contrôleurs
- 4. Lanceur
- La partie frontend
- 1. Angular CLI
- 2. Création du projet initial
- 3. Démarrage de l’application
- 4. Créer un service compte
- Facilitations
- Points clés
Spring et JHipster
- Introduction
- 1. JHipster web
- 2. Personnalisation de l’outil JHispter
- 3. Niveaux de personnalisations
- Créer un blueprint
- 1. Blueprint pour utiliser lombok dans le domain
- 2. Exécution du blueprint local
- JHipster comme outil multi-technologies
- 1. Côté client
- 2. Côté serveur
- 3. Côté déploiement
- 4. Côté Spring
- Structure du projet
- 1. La partie front
- 2. Les grandes lignes de la partie back
- Applications générées
- 1. Spring Boot
- a. Système de gestion des dépendances
- b. Utilisation de Spring Security
- c. Spring MVC REST + Jackson
- d. Support optionnel de WebSocket avec Spring WebSocket
- e. Spring Data JPA + Bean Validation
- f. Évolution des bases de données avecLiquibase
- g. Support Elasticsearch
- h. Bases SQL et NoSQL
- i. Packaging multiplateforme
- j. Monitoring et métriques
- k. Autres avantages non abordés
- l. Avantages de Spring Boot
- 1. Spring Boot
- 1. Dépendances Maven
- 2. Configuration de l’application
- 3. La classe Application qui contient le main
- 4. La classe WebConfigurer
- 5. La classe SecurityConfiguration
- 6. La classe SecurityUtils
- 7. Classe AuthoritiesConstants
- 8. Spring Data JPA et Bean Validation
- 9. Spring MVC REST + Jackson
- 10. Les classes de la couche Repository
- 11. La couche Service
- 12. La couche Resource
- 1. Configuration DatabaseConfiguration
- 2. Configuration LocaleConfiguration
- 3. Configuration ReactorConfiguration
- 4. Configuration SecurityConfiguration
- 5. Configuration WebConfigurer
- 6. Les tests
Les images natives de GraalVM
- Introduction
- Images natives de GraalVM
- Ahead Of Time (AOT)
- 1. Génération de fichiers d’indices
- 2. Génération de classes proxy
- 3. Traitement Spring AOT et GraalVM
- Application optimisée pour le mode natif
- 1. Éviter la réflexion excessive
- 2. Utilisez des proxies statiques
- 3. Configurez correctement Spring Native
- 4. Autres conseils
- a. Minimisez l’utilisation de bibliothèquesdynamiques
- b. Utilisez des bibliothèques natives si possible
- c. Testez régulièrement avec GraalVM
- d. Évitez la surspécification des dépendances
- e. Soyez conscient des performances au moment du démarrage
- f. Suivez les mises à jour de GraalVM et SpringNative
- g. Consultez la documentation
- 1. Tests avec la JVM
- 2. Tests avec les outils de build natifs GraalVM
- 1. Quarkus
- 2. Micronaut
- a. Points clés de la compatibilité
- b. Objectif de la compatibilité
- c. Considérations
- a. Interopérabilité avec l’écosystèmeSpring
- b. Points à considérer
Les microservices
- Introduction
- 1. Découverte de service avec Spring Cloud NetflixEureka
- a. Usage
- b. Fonctionnement
- c. Utilité
- 1. Découverte de service avec Spring Cloud NetflixEureka
- 2. Communication interservices via Spring Cloud OpenFeign
- a. Qu’est-ce que Spring Cloud OpenFeign ?
- b. Fonctionnement
- c. Avantages
- 3. Configuration distribuée avec Spring CloudConfig
- a. Fonctionnalités
- b. Fonctionnement
- c. Avantages
- 4. API Gateway et documentation Springdoc
- a. Porte d’entrée pour les microservices
- b. Documentation OpenAPI avec Springdoc
- c. Avantages de l’intégration
- 5. Collecte de traces
- a. Micrometer et OpenTelemetry
- b. Visualisation et analyse des traces
- c. Avantages de l’intégration
- 1. Fichiers de configuration
- 2. Serveur de découverte (Discovery)
- 3. Les applications
- 4. API Gateway avec Spring Cloud Gateway
- 5. Exécution des microservices
Nouveautés de Spring 6
- Introduction
- Passage à Java 17
- 1. Les record(s)
- 2. Blocs de texte
- 3. Expressions switch
- 4. Correspondance de motifs
- 5. Classes et interfaces scellées
- Jakarta EE 9
- Dépendances supplémentaires
- Points d'intérêts
- Petites modifications dans Spring Web MVC
- Migration du code vers la version 6 de Spring-core
- 1. Mise à niveau vers la version 6.0
- a. Conteneur de base
- b. Le cache
- c. Accès aux données et transactions
- d. Applications web
- 1. Mise à niveau vers la version 6.0
- 2. Migration vers Spring 6.1
- a. API retirées
- b. Rétention des noms de paramètres
- c. Le conteneur de base
- d. Mise en cache
- e. Accès aux données et transactions
- f. Applications web
- g. Applications de messages
- 1. Phases préparatoires
- a. Examen des dépendances
- b. Mise à niveau vers Spring Security 6.0
- c. Types de dispatch
- d. Examen des exigences système
- e. Examen des obsolescences de Spring Boot 2.x
- a. Migration des propriétés de configuration
- b. Spring Framework 6.0
- c. Jakarta EE
- a. Support des bannières d’images
- b. Format de date des journaux
- c. Modification @ConstructorBinding
- d. Suppression de YamlJsonParser
- e. Fichiers d’autoconfiguration
- a. URL de Spring MVC et WebFlux
- b. Le server.max-http-header-size
- c. Apache HttpClient dans RestTemplate
- a. Exposition de l’endpoint JMX
- b. Renommage de l’Endpoint httptrace en httpexchanges
- c. Réponses JSON d’Actuator
- d. Sanitisation des endpoints d’Actuator
- e. Changements dans Micrometer et les métriques
- f. Dépréciation de l’instrumentationSpring Boot 2.x
- g. Migration des fournisseurs et contributeurs de balises
- h. Configuration automatique des JvmInfoMetrics de Micrometer
- i. Propriétés d’export des métriquesd’Actuator
- j. Vérification de l’état de MongoDB
- a. Changements dans les propriétésde données
- b. Propriétés Cassandra
- c. Propriétés Redis
- d. Flyway
- e. Liquibase
- f. Hibernate 6.1
- a. MongoDB embarqué
- b. R2DBC 1.0
- c. Clients et modèles Elasticsearch
- d. ReactiveElasticsearchRestClientAutoConfiguration
- e. Pilote JDBC MySQL
- a. ReactiveUserDetailsService
- b. Configuration du fournisseur de confiance SAML2
- a. @EnableBatchProcessing est maintenant déconseillé
- b. Jobs Batch multiples
- a. Type de stockage de Spring Session
- a. Résolution simplifiée du nom dela classe principale
- b. Configuration des tâches Gradle
- c. Fichier build-info.properties
- a. Exécution de notre application dans le processusMaven
- b. Git Commit ID Maven Plugin
- c. Modifications de la gestion des dépendances
Conclusion
- Récapitulatif
- Le mot de la fin
Hervé LE MORVAN
Hervé LE MORVAN est aujourd'hui expert technique pour de grands comptes de la Banque, de l'Assurance et des Telecoms. Durant ses plus de vingt années d'expérience, il est principalement intervenu en tant que référent technique et formateur dans des équipes de Recherches et Développement ou d'Architectes et en tant que support au développement d’applications sur des missions de migration ou de modernisation de Systèmes d'Informations. À ce titre, il est intervenu dans de nombreux projets de migrations utilisant le socle Spring et connaît parfaitement les attentes des équipes dans ce domaine. C’est toute cette expérience qu’il partage volontiers tout au long des pages de ce livre.
En savoir plus