# 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 roua...
1. L’offre Spring 
Le portfolio et les fondamentaux du framework 
2. Intégration au sein des applications Java EE 
 Pers...
1. Zoom sur le portfolio de Spring Pivotal 
Le coeur du framework Spring 
Le support proposé par Spring 
2. Les fondamenta...
# 5 
Le coeur du framework Spring (1/2) 
Conteneur léger 
Assemble les composants applicatifs 
Injection de dépendance 
Gè...
# 6 
Le coeur du framework Spring (2/2) 
Exemple d’une application web avec une architecture 5 tiers 
Action 
Struts 
JVM ...
# 7 
Le portfolio Spring 
Spring dépasse le cadre du simple framework 
Spring Framework est composé de différents modules ...
Worshop n°1 – L’offre Spring 
1. Zoom sur le portfolio de Spring Pivotal 
Le coeur du framework Spring 
Le support proposé...
# 9 
Le support proposé par Spring 
Intégration 
Présentation 
Validation 
Tests 
BPM 
Supervision 
Mailing 
Mobile 
Persi...
# 10 
La Persistance 
Fonctionnalité Module / Projet 
Gestion des transactions Spring TX 
Hiérarchie d’exceptions génériqu...
# 11 
Couche de Présentation 
Fonctionnalité Module / Projet / Tiers 
Standards supportés : Servlet, JSP, JSTL, JSF, 
Port...
# 12 
Communication par web services 
Fonctionnalité Module / Projet / Tiers 
Web services SOAP avec approche contract-fir...
# 13 
Intégration au SI 
En complément de l’intégration par services web 
Fonctionnalité Module / Projet 
Support de middl...
# 14 
Tester les applications 
Fonctionnalité Module / Ext 
Support des principaux frameworks de tests 
unitaires TestNG e...
# 15 
Rapid Application Development 
Fonctionnalité Module / Projet 
Support des langages dynamiques Groovy, 
JRuby et Bea...
1. Zoom sur le portfolio de Spring Pivotal 
Le coeur du framework Spring 
Le support proposé par Spring 
2. Les fondamenta...
«interface» 
ICompteDAO 
# 17 
L’inversion de contrôle 
Basé sur le découplage des classes et la programmation par interfa...
# 18 
L’injection de dépendances 
Mécanisme permettant d’implémenter l’inversion de contrôle 
Le conteneur léger est un as...
# 19 
Intercepter un appel 
Spring peut modifier la chaîne d’appel des composants pour par exemple : 
Greffer des aspects ...
1. Zoom sur le portfolio de Spring Pivotal 
Le coeur du framework Spring 
Le support proposé par Spring 
2. Les fondamenta...
# 21 
Bean Spring 
Bean Spring = instance d’une classe pouvant être un simple POJO 
Possède les caractéristiques suivantes...
# 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ét...
# 23 
L’injection en pratique 
Spring propose 3 approches pour configurer son contexte applicatif 
Type Atouts 
Déclaratio...
public class JpaCompteDAO implements ICompteDAO { 
} 
public class DefaultBanqueService implements IBanqueService { 
priva...
Identifiant du bean 
@Service("banqueService") 
public class DefaultBanqueService implements IBanqueService 
{ 
# 25 
Décl...
# 26 
Déclaration par programmation 
public class JpaCompteDAO implements ICompteDAO { 
} 
public class DefaultBanqueServi...
1. Zoom sur le portfolio de Spring Pivotal 
Le coeur du framework Spring 
Le support proposé par Spring 
2. Les fondamenta...
# 28 
Design Patterns utilisés par Spring 
Pattern Exemples d’utilisation 
Factory Fabrique de beans, de sessions Hibernat...
Prochain SlideShare
Chargement dans…5
×

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

5 929 vues

Publié le

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

Publié dans : Technologie
0 commentaire
6 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
5 929
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 074
Actions
Partages
0
Téléchargements
197
Commentaires
0
J’aime
6
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. # 1 Workshop Spring - Session 1 L’offre Spring Diffusé en décembre 2011 Réactualisé en octobre 2014
  2. 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. 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. 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. # 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. # 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. # 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. 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. # 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. # 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. # 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. # 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. # 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. # 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. # 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. 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. 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. # 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. # 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. 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. # 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. # 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. # 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. 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. 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. # 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. 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. # 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

×