SlideShare une entreprise Scribd logo
# 1 
Workshop Spring - Session 1 
L’offre Spring 
Diffusé en décembre 2011 
Réactualisé en octobre 2014
# 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
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
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 
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 
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 
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
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 
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 
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 
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 
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 
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 
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 
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
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
«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 
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 
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
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 
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 
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 
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
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
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 
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
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 
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

Contenu connexe

Tendances

Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
ENSET, Université Hassan II Casablanca
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
Jaouad Assabbour
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
ENSET, Université Hassan II Casablanca
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
DNG Consulting
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
Florian Beaufumé
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
seydou4devops
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
Ippon
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
ENSET, Université Hassan II Casablanca
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
Syrine Ben aziza
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
Antoine Rey
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
Eric Bourdet
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Eric SIBER
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
Nizar MAATOUG -ISET Sidi Bouzid
 

Tendances (20)

Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 

En vedette

Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
Richard Banks
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
Antoine Rey
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
Antoine Rey
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
Antoine Rey
 
pessimistic-development-presentation
pessimistic-development-presentationpessimistic-development-presentation
pessimistic-development-presentation
Jonathan Marbutt
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
Antoine Rey
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Antoine Rey
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
Antoine Rey
 
Learned optimism
Learned optimismLearned optimism
Learned optimism
Andrew Chaa
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
Antoine Rey
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
Antoine Rey
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
Antoine Rey
 

En vedette (12)

Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
pessimistic-development-presentation
pessimistic-development-presentationpessimistic-development-presentation
pessimistic-development-presentation
 
Workshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring IntegrationWorkshop Spring - Session 5 - Spring Integration
Workshop Spring - Session 5 - Spring Integration
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
Learned optimism
Learned optimismLearned optimism
Learned optimism
 
Introduction à Angular JS
Introduction à Angular JSIntroduction à Angular JS
Introduction à Angular JS
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 

Similaire à Workshop Spring - Session 1 - L'offre Spring et les bases

Spring.NET
Spring.NETSpring.NET
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
Mathias Kluba
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
Mathias Kluba
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
Nathaniel Richand
 
Java j2ee
Java j2eeJava j2ee
Java j2ee
izdihara
 
Java Server Faces - Beyond
Java Server Faces - BeyondJava Server Faces - Beyond
Java Server Faces - Beyond
Mamadou Lamine Ba
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
SliimAmiri
 
Building Entreprise App With Spring Portfolio
Building Entreprise App With Spring PortfolioBuilding Entreprise App With Spring Portfolio
Building Entreprise App With Spring Portfoliomaknihamdi
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Cyrille Le Clerc
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'artTugdual Grall
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en production
Julien Dubois
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
ngombeemmanuel
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
Rachida19
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
MSDEVMTL
 
Cours spring
Cours springCours spring
Cours spring
mohamed el haddad
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdf
badrfathallah2
 
Architecture .net
Architecture  .netArchitecture  .net

Similaire à Workshop Spring - Session 1 - L'offre Spring et les bases (20)

Spring.NET
Spring.NETSpring.NET
Spring.NET
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 
Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Java j2ee
Java j2eeJava j2ee
Java j2ee
 
Java Server Faces - Beyond
Java Server Faces - BeyondJava Server Faces - Beyond
Java Server Faces - Beyond
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
Building Entreprise App With Spring Portfolio
Building Entreprise App With Spring PortfolioBuilding Entreprise App With Spring Portfolio
Building Entreprise App With Spring Portfolio
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
 
Java Server Faces 2
Java Server Faces 2Java Server Faces 2
Java Server Faces 2
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en production
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
 
cours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdfcours-gratuit.com--id-1964.pdf
cours-gratuit.com--id-1964.pdf
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Cours spring
Cours springCours spring
Cours spring
 
Introduction à Spring.pdf
Introduction à Spring.pdfIntroduction à Spring.pdf
Introduction à Spring.pdf
 
Spring
SpringSpring
Spring
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 

Dernier

COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
AlbertSmithTambwe
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 

Dernier (9)

COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 

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