Rejoignez les millions de développeurs Spring
De par sa forte pénétration dans les entreprises, tout développeur Java /JEE a ou aura à travailler sur une application s’appuyant sur Spring. Or Spring dépasse le cadre du simple framework open source.
Cette série de 5 workshops a pour objectif de faire un tour d’horizon de l’écosystème des technologies supportées par Spring avant de se focaliser plus spécifiquement sur certaines d’entre elles.
Retours d’expérience, bonnes pratiques, techniques avancées seront de partie.
Propulsée dans Java EE 6 avec CDI et plus récemment au sein de JavaScript avec Google Gin, l’injection de dépendance sera au cœur du premier workshop.
Voici le support de présentation du workshop sur Spring que j'ai animé en novembre 2011 au sein de ma SSII et que j'ai réactualisé avant sa diffusion sur Slideshare.
Au sommaire du workshop :
1. Zoom sur le portfolio Spring Source
1. Le cœur du framework Spring : IoC, AOP et support
2. Le support proposé par Spring : persistance, présentation, communication, test, outils …
2. Les fondamentaux
1. Fonctionnement du conteneur léger
2. Les beans Spring
3. Les design patterns rencontrés dans Spring
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Découvrez le framework web Spring Boot qui a la cote !
Apprenez comment son système d'auto-configuration fonctionne.
Live coding et exemple de migration vers Spring Boot sont de la partie.
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Découvrez le framework web Spring Boot qui a la cote !
Apprenez comment son système d'auto-configuration fonctionne.
Live coding et exemple de migration vers Spring Boot sont de la partie.
Ce guide fournit un exemple de la manière dont Spring Boot vous aide à accélérer le développement d'applications. Au fur et à mesure que vous lirez plus de guides de démarrage de Spring, vous verrez plus de cas d'utilisation de Spring Boot. Ce guide est destiné à vous donner un aperçu rapide de Spring Boot. Si vous souhaitez créer votre propre projet basé sur Spring Boot, visitez Spring Initializr, remplissez les détails de votre projet, choisissez vos options et téléchargez un projet groupé sous forme de fichier zip.
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
C’est Quoi Maven?
Création d’un Projet Maven
Balises du POM.XML
Arborescence Standard
Buts (Goals)
TP : Projet avec Maven (JAR)
TP : Projet Web Avec Maven (WAR)
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
The Spring IoC container is at the core of the Spring Framework. The container will create the objects, wire them together, configure them, and manage their complete life cycle from creation till destruction. The Spring container uses dependency injection (DI) to manage the components that make up an application.
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.
Parallel to Spring Web MVC, Spring Framework 5.0 introduced a reactive-stack web framework whose name, “Spring WebFlux,” is also based on its source module (spring-webflux). This section covers Spring Web MVC.
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Exemple d'application qui montre comment utiliser les bonnes pratiques de JEE pour développer un site web de commerce électronique en utilisant les outils :
- Eclipse comme environnement de développement
- Maven comme outil d’intégration
- JUnit comme Framework des tsts unitaire
- Spring IOC pour l'inversion de contrôle
- Spring MVC pour la couche web
- Spring Security pour la sécurité
- JPA, Hibernate
- Web Service SOAP
- Web Service REST
- Service RMI
Chaque jour, de nombreux développeurs utilisent le framework Spring pour l’injection de dépendances et la gestion des transactions. Majeures, ces 2 fonctionnalités ne nécessitent pas un gros effort d’apprentissage. Pour autant, leurs mises en œuvre par le framework est complexe. Par curiosité intellectuelle, mais également afin d’éviter certains pièges et de profiter pleinement des capacités de Spring, il est intéressant de comprendre les mécanismes internes du framework qu’on utilise au quotidien : cycle de vie d’un bean, proxy, intercepteur, post-processeur, fabrique de beans, hiérarchie de contextes, portée …
Les slides de cette présentation ont pour objectif de vous les faire les introduire.
Microservices with .Net - NDC Sydney, 2016Richard Banks
Presented at NDC Sydney, August 2016
Thanks to organisations like Netflix, and the need to develop solutions that scale well in the cloud, microservices have become the hot new topic. Yet, for all the talk, there are few practical examples of how you actually build a microservice in .NET.
It's time to fix that little oversight as we show you how you can build a microservices based solution using .NET, and a number of open source tools (EventStore, RabbitMq and Redis to name a few).
You'll also get to understand the pros and cons of a microservices solution and consider how a microservices approach might impact how you and your team relate to your customers.
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
C’est Quoi Maven?
Création d’un Projet Maven
Balises du POM.XML
Arborescence Standard
Buts (Goals)
TP : Projet avec Maven (JAR)
TP : Projet Web Avec Maven (WAR)
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
The Spring IoC container is at the core of the Spring Framework. The container will create the objects, wire them together, configure them, and manage their complete life cycle from creation till destruction. The Spring container uses dependency injection (DI) to manage the components that make up an application.
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.
Parallel to Spring Web MVC, Spring Framework 5.0 introduced a reactive-stack web framework whose name, “Spring WebFlux,” is also based on its source module (spring-webflux). This section covers Spring Web MVC.
Se support présente l'outil d'intégration Maven dans le processus d'industrialisation du génie logiciel. Tout ce qu'il faut savoir sur maven.
La deuxième partie de ce cours traite la mise en oeuvre de maven dans des projets basés sur JPA, Hibernate, Spring et Struts.
Bon apprentissage à tous
Exemple d'application qui montre comment utiliser les bonnes pratiques de JEE pour développer un site web de commerce électronique en utilisant les outils :
- Eclipse comme environnement de développement
- Maven comme outil d’intégration
- JUnit comme Framework des tsts unitaire
- Spring IOC pour l'inversion de contrôle
- Spring MVC pour la couche web
- Spring Security pour la sécurité
- JPA, Hibernate
- Web Service SOAP
- Web Service REST
- Service RMI
Chaque jour, de nombreux développeurs utilisent le framework Spring pour l’injection de dépendances et la gestion des transactions. Majeures, ces 2 fonctionnalités ne nécessitent pas un gros effort d’apprentissage. Pour autant, leurs mises en œuvre par le framework est complexe. Par curiosité intellectuelle, mais également afin d’éviter certains pièges et de profiter pleinement des capacités de Spring, il est intéressant de comprendre les mécanismes internes du framework qu’on utilise au quotidien : cycle de vie d’un bean, proxy, intercepteur, post-processeur, fabrique de beans, hiérarchie de contextes, portée …
Les slides de cette présentation ont pour objectif de vous les faire les introduire.
Microservices with .Net - NDC Sydney, 2016Richard Banks
Presented at NDC Sydney, August 2016
Thanks to organisations like Netflix, and the need to develop solutions that scale well in the cloud, microservices have become the hot new topic. Yet, for all the talk, there are few practical examples of how you actually build a microservice in .NET.
It's time to fix that little oversight as we show you how you can build a microservices based solution using .NET, and a number of open source tools (EventStore, RabbitMq and Redis to name a few).
You'll also get to understand the pros and cons of a microservices solution and consider how a microservices approach might impact how you and your team relate to your customers.
Tester unitairement une application javaAntoine Rey
Présente les différents types de tests automatisés, les objectifs des tests unitaires, les stratégies de mise en œuvre, les bonnes pratiques, les difficultés, ce qu'est un mock, différents outils (Unitils, Mockito, DbUnit, Spring Test) et des exemples de tests (DAO et contrôleurs Spring MVC), sans oublier le test de code legacy.
Workshop Spring - Session 5 - Spring IntegrationAntoine Rey
Vous avez déjà entendu parler d’Apache Camel ?
Les Design Pattern n’ont plus de secrets pour vous ?
L’Event Driven Architecture vous attire ?
Les Enterprise Integration Pattern vous interpellent ?
Vos applications reposent sur TCP, JMS, FTP, SFTP, les fichiers, les mails, XML, les web services SOAP, REST, RSS, JPA, JDBC ou même Twitter ?
N’attendez plus : venez découvrir l’utilisation des patterns comme le Channel Adapter, le Router ou l’Aggregator au travers d’un workshop sur Spring Integration.
Voici le support de présentation d’un workshop d’1h s’appuyant sur le cas d’étude suivant : un moteur chargé d’indexer des données clients dans le moteur de recherche Elasticsearch.
Une connaissance minimaliste de Spring Framework est pré-requise.
Spring Integration est à votre portée de main. EAI et ESB n’ont qu’à bien se tenir !!
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
Les secrets du conteneur Spring vous attendent pour ce 3ième workshop sur le framework Spring : module spring-test, injection de beans de portées différentes, support des JSR 250 et 330, post-processeurs de beans, fichiers de configuration et abstraction de l’accès aux ressources.
Si vous pensez encore que le data-binding, l’inversion de dépendances, le pattern MVC ou bien encore la gestion de la navigation sont réservés au code Java des applications web modernes, courrez assistez à ce workshop. AngularJS, le dernier framework JavaScript de chez Google, devrait vous surprendre.
Basée sur l’université AngularJS, ou le futur du développement Web présentée lors de Devoxx France 2013, ce workshop a pour objectif de vous initier à AngularJS.
Les concepts fondamentaux seront mis en en action au travers de l’application Game Store.
Côté industrialisation, nous verrons que tests unitaires, tests fonctionnels et infrastructure de build ne sont pas non plus délaissés.
A l’heure où la couche présentation des applications web est de plus en plus déportée côté client, ce workshop a pour objectif de démystifier ce type de framework permettant de structurer une application JavaScript.
Spring Framework Petclinic sample applicationAntoine Rey
Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications.
The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).
Une présentation abstraite en vue de proposer une orientation technique pour sortir l'entreprise de l’imbroglio qu'est Java Server Faces, pour une réduction des coûts de développement et un gain de temps dans l'optique d'une livraison rapide des projets...
Authenticating, validating, caching, error handling, logging, documenting, testing and profiling are common features in web API, here are code samples to show how to implement them!
Spring Meetup Paris - Back to the basics of Spring (Boot)Eric SIBER
Aujourd'hui, avec Spring Boot, la promesse est de pouvoir bootstrapper en 60 secondes chrono une application.
C'est génial et porteur de sens (et un vrai laboratoire de bonnes pratiques) mais le temps de bootstrapping de l'équipe de développement, des individus composant cette équipe, est bien loin de suivre la même célérité. Dans le pire des cas, vous rencontrerez même des équipes au sein desquelles les écarts de niveaux sont extrêmement importants.
Pourquoi donc ? Réfléchissez à ce qui se passe si vous donnez le volant d'une formule 1 à quelqu'un qui vient tout juste d'obtenir son permis A après avoir fait son apprentissage sur une petite citadine dans une grande ville ... et vous aurez un début de réponse.
Le portfolio Spring constitue une excellente et populaire boîte à outils qui vous promet une grande productivité. Pour tirer profit de cette productivité et ne pas rester bridé par les connaissances de l'équipe, il ne suffit pas de choisir le bon framework, il faut savoir comment l'utiliser, le sublimer, en épousant les paradigmes de ce dernier.
Je vous propose donc d'en revenir aux fondamentaux de Spring (Boot) afin de vous permettre, bien avant de pouvoir vous attaquer au graal des architectures Microservices, d'être capable de tirer la pleine puissance du framework, tout du moins de ne pas en détourner l'essence.
Si vous n'êtes pas familier de Spring, ce talk vous permettra d'en avoir un premier aperçu pragmatique sans effet waouh. Si vous connaissez déjà Spring, vous trouverez à travers ce talk l'opportunité de prendre du recul sur son usage et de confronter vos pratiques aux patterns et bénéficies qu'il vous offre.
Workshop Spring - Session 1 - L'offre Spring et les bases
1. # 1
Workshop Spring - Session 1
L’offre Spring
Diffusé en décembre 2011
Réactualisé en octobre 2014
2. # 2
Objectifs
Découvrir l’écosystème des technologies supportées par
Spring
Approfondir ses connaissances sur les rouages du
conteneur léger
Profiter de retours d’expérience sur l’utilisation de
différentes briques
Appliquer au plus tôt ce que vous aurez appris
3. 1. L’offre Spring
Le portfolio et les fondamentaux du framework
2. Intégration au sein des applications Java EE
Persistance et tests unitaires
3. Techniques avancées du conteneur léger
Post-Processeurs, EL, support des JSR
4. Retour d’expérience sur l’utilisation de Spring Batch
Etude de cas, principes et mise en oeuvre
# 3
Sommaire
4. 1. Zoom sur le portfolio de Spring Pivotal
Le coeur du framework Spring
Le support proposé par Spring
2. Les fondamentaux
Fonctionnement du conteneur léger
Les beans Spring
Design patterns rencontré dans Spring
# 4
Worshop n°1 – L’offre Spring
5. # 5
Le coeur du framework Spring (1/2)
Conteneur léger
Assemble les composants applicatifs
Injection de dépendance
Gère leur cycle de vie
Programmation orientée aspect
Ajout de fonctionnalités transverses
Séparation des préoccupations
Intégration de frameworks tiers
Support natif d’un grand nombre
de frameworks
et de standards Java EE
Abstraction facilitant le changement d’implémentation
Ouvert aux extensions
6. # 6
Le coeur du framework Spring (2/2)
Exemple d’une application web avec une architecture 5 tiers
Action
Struts
JVM de l’application
Service
Métier
Base
de
données
DAO
Proxy
Conteneur Spring
7. # 7
Le portfolio Spring
Spring dépasse le cadre du simple framework
Spring Framework est composé de différents modules
Spring core contient le conteneur léger
Autres modules : ORM, DAO, AOP, Web, JEE
Les modules suivent le même cycle de livraison
Le portolio Spring est également composé de projets
Rachats, intégration de projets open source, nouvelles idées
Basés sur le framework Spring
Propre cycle de livraison
8. Worshop n°1 – L’offre Spring
1. Zoom sur le portfolio de Spring Pivotal
Le coeur du framework Spring
Le support proposé par Spring
2. Les fondamentaux
Fonctionnement du conteneur léger
Les beans Spring
Design patterns rencontré dans Spring
# 8
9. # 9
Le support proposé par Spring
Intégration
Présentation
Validation
Tests
BPM
Supervision
Mailing
Mobile
Persistance
Planification
Réseaux sociaux
Cloud
Applications RAD
Big Data
Services Web
10. # 10
La Persistance
Fonctionnalité Module / Projet
Gestion des transactions Spring TX
Hiérarchie d’exceptions génériques Spring TX
Facilite l’utilisation de JDBC Spring JDBC
Support des frameworks de mapping objets
relationnels Hibernate, JPA, iBatis, JDO
Spring ORM
API de haut de niveau pour les bases NoSQL,
les grilles de données et JPA
Spring Data
Marshalling /Unmarshalling XML Spring OXM
11. # 11
Couche de Présentation
Fonctionnalité Module / Projet / Tiers
Standards supportés : Servlet, JSP, JSTL, JSF,
Portlet
Spring Web
Support de frameworks web tiers : Struts, Tiles,
WebWork, Tapestry
Spring Web
Implémentation propriétaire du pattern MVC 2 Spring MVC
Gestion du cycle de vie d’un flot web Spring Web Flow
Support Ajax avec DWR DWR
Support d’applications RIA en Flex Spring BlazeDS
Integration
12. # 12
Communication par web services
Fonctionnalité Module / Projet / Tiers
Web services SOAP avec approche contract-first
avec support des API DOM, JDOM, DOM4J, SAX,
JAXB, Castor XML, XML Beans, JiBX, Xstream
Spring WS
Exposer et consommer des web services SOAP
avec les standards JAX-RPC et JAX-WS et une
approche code-first
Spring Remoting
Web services REST Spring MVC
Espace de nommage dédié à CXF CXF
13. # 13
Intégration au SI
En complément de l’intégration par services web
Fonctionnalité Module / Projet
Support de middleware orienté message (MoM) :
JMS, AMQP
Spring JMS
Support communication entrantes et sortantes JCA Spring TX
Communication distante avec EJB, RMI, Caucho, et
JAX-RPC
Spring Remoting
Implémentation des Enterprise Integration
Patterns
Spring Integration
Traitement par lots avec reprise sur erreur Spring Batch
Authentification LDAP et SSO et gestion des
habilitations
Spring Security
Runtime distribué d’intégration, d’analyse et
d’export de données, notamment vers Hadoop
Spring XD
14. # 14
Tester les applications
Fonctionnalité Module / Ext
Support des principaux frameworks de tests
unitaires TestNG et JUnit
Spring Test
Espace de nommage et API pour les bases de
données embarquées H2, HSQLDB et Derby
Spring JDBC
Support du pattern Rollback after the test Spring Test
Tests d’applications web basées sur Spring MVC Spring Test
Simulacres d’objets JEE Spring Test
Tester des services web sans serveur HTTP Spring WS Test
15. # 15
Rapid Application Development
Fonctionnalité Module / Projet
Support des langages dynamiques Groovy,
JRuby et BeanShell
Spring Scripting
Génération de code Groovy et de requêtes HQL
à l’aide de convention de nommage
Grails
Démarrage rapide d’applications Spring sans
configuration.
Spring Boot
Génération de code Java et d’aspects à partir
d’annotations
Spring Roo
Bundle Eclipse proposant wizards, outils visuels
et fonctionnalités de déploiement
Spring Tool Suite
IDE graphique et déploiement dans le cloud WaveMaker
16. 1. Zoom sur le portfolio de Spring Pivotal
Le coeur du framework Spring
Le support proposé par Spring
2. Les fondamentaux
Fonctionnement du conteneur léger
Les beans Spring
Design patterns rencontré dans Spring
# 16
Worshop n°1 – L’offre Spring
17. «interface»
ICompteDAO
# 17
L’inversion de contrôle
Basé sur le découplage des classes et la programmation par interface
BanqueService JpaCompteDAO
* 1
Couplage fort entre un
service métier et un DAO
BanqueService
JpaCompteDAO
* 1
L’introduction de
l’interface permet de
découpler le service de
l’implémentation du DAO
Le service ne dépend plus du DAO
Le DAO dépend d’une interface utilisée par le service
L’inversion de contrôle permet au service de ne pas connaître le code
qu’il va exécuter
18. # 18
L’injection de dépendances
Mécanisme permettant d’implémenter l’inversion de contrôle
Le conteneur léger est un assembleur ; il gère :
le cycle de vie des composants applicatifs
et leur mise en relation
La phase d’injection de dépendance est appelée wiring
Les dépendances sont résolues dynamiquement
3 types d’injection : constructeur, mutateur et interface
Injection de dépendances standardisée en 2009 dans :
JSR 330 - Dependency Injection for Java
JSR 299 - Context and Dependency Injection for Java EE (CDI)
19. # 19
Intercepter un appel
Spring peut modifier la chaîne d’appel des composants pour par exemple :
Greffer des aspects
Insérer un comportement transactionnel
2 types de proxy en fonction de l’appelé :
Interface par l’utilisation de proxy dynamique java.lang.reflect.Proxy
Classe par instrumentation de code
banqueService JdkDynamicAopProxy jpaCompteDAO
invoke
TransactionInterceptor
invoke
crediter
20. 1. Zoom sur le portfolio de Spring Pivotal
Le coeur du framework Spring
Le support proposé par Spring
2. Les fondamentaux
Fonctionnement du conteneur léger
Les beans Spring
Design patterns rencontré dans Spring
# 20
Worshop n°1 – L’offre Spring
21. # 21
Bean Spring
Bean Spring = instance d’une classe pouvant être un simple POJO
Possède les caractéristiques suivantes :
un identifiant
un type
une portée
des propriétés (types simples ou structures données)
des collaborateurs
des méthodes d’initialisation / destruction
un constructeur
un nom
un bean parent
un mode d’injection
Injection explicite ou automatique (auto-wiring)
22. # 22
Portées des beans Spring
La portée d’un bean détermine son cycle de vie
Utilisée lors de l’injection ou par la méthode getBean du contexte applicatif
Portées proposées par Spring pour une application web :
Portée Description
singleton
(par défaut)
Un unique bean est créé pour toute la durée de vie du
contexte Spring
prototype Une nouvelle instance est créée à chaque fois que le bean
est référencé
session Une instance de bean est créée pour chaque session HTTP
request Une instance de bean est créée pour chaque requête HTTP
Portées supplémentaires :
chunk pour les batchs et globalSession pour les portlets
Possibilité de créer sa propre portée
23. # 23
L’injection en pratique
Spring propose 3 approches pour configurer son contexte applicatif
Type Atouts
Déclaration XML Aucune adhérence du code à Spring
Centralisation de la configuration
Schémas XML dédiés pour alléger l’écriture
Complet
Automatisée par
annotations
Configuration allégée
Particulièrement adaptée aux tests unitaires
Se rapproche de la JSR-330 Dependency Injection
Par programmation Typage fort et vérifications à la compilation
Refactoring géré nativement par l’IDE
Orienté Objet
Possibilité de mixer ces approches
Complémentaires
24. public class JpaCompteDAO implements ICompteDAO {
}
public class DefaultBanqueService implements IBanqueService {
private ICompteDAO compteDAO;
public void setCompteDAO(ICompteDAO compteDAO) {
this.compteDAO = compteDAO;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans … >
<bean id="jpaCompteDAO" class="com.sqli.demo.persistence.impl.JpaCompteDAO"/>
<bean id="banqueService"
class="com.sqli.demo.service.impl.DefaultBanqueService">
<property name="compteDAO" ref="jpaCompteDAO"/>
</bean>
</beans>
# 24
Déclaration de beans en XML
Service et DAO
sous forme de
simple POJO
Wiring par mutateur
25. Identifiant du bean
@Service("banqueService")
public class DefaultBanqueService implements IBanqueService
{
# 25
Déclaration de beans par annotations
@Repository
public class JpaCompteDAO implements ICompteDAO {
}
@Autowired
private ICompteDAO compteDAO;
/* Setter */
}
Beans Spring
annotés
Injection du bean
ayant le type
ICompteDAO
<?xml version="1.0" encoding="UTF-8"?>
<beans ...>
<context:component-scan base-package="com.sqli.demo" />
</beans>
Active la détection des beans Spring présents dans le package
26. # 26
Déclaration par programmation
public class JpaCompteDAO implements ICompteDAO {
}
public class DefaultBanqueService implements IBanqueService {
@Autowired
private ICompteDAO compteDAO;
/* Setter */
}
@Configuration
public class ServiceBancaireConfiguration {
@Bean
public IBanqueService banqueService() {
return new DefaultBanqueService();
}
@Bean
public ICompteDAO jpaCompteDAO() {
return new JpaCompteDAO();
}
}
Les classes
de service et
de DAO ne sont
pas annotées
Injection du DAO
par son type
Classe remplaçant la
configuration XML
Définition de 2 beans
Spring
nom de la méthode
=
nom du bean
27. 1. Zoom sur le portfolio de Spring Pivotal
Le coeur du framework Spring
Le support proposé par Spring
2. Les fondamentaux
Fonctionnement du conteneur léger
Les beans Spring
Design patterns rencontré dans Spring
# 27
Worshop n°1 – L’offre Spring
28. # 28
Design Patterns utilisés par Spring
Pattern Exemples d’utilisation
Factory Fabrique de beans, de sessions Hibernate, de
proxy spécifiques, de validateurs
Template Method Classes de template pour Hibernate, JPA, JDBC,
JMS, web service SOAP, REST
Proxy Décoration des beans, transactions, tissage des
aspects (AOP)
Specification Mutualisation de critères de recherche dans
Spring Data
Builder Constructeurs de flow web, de messages
Singleton Portée par défaut des beans
Adapter Listener de messages JMS, entité d’adaptation
de traitement d’un web service