SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Introduction à Spring
Présentation du framework java/J2EE numéro 1 Nathaniel Richand
05/2009
© British Telecommunications plc
Introduction à Spring
• Place de Spring dans l’écosystème Java
• Que fait Spring?
• Injection de dépendance et AOP
• Exemple de facilitateur
• Conclusion
© British Telecommunications plc
Place de Spring dans
l’écosystème Java
© British Telecommunications plc
Qu’est ce que Spring?
• Spring est un framework de développement Java basé
sur la notion de conteneur léger.
• Spring existe depuis 2002, la dernière version est la 2.5.
La version 3.0 est en béta.
• Spring est un projet Open Source de licence Apache
dont le support et les évolutions sont réalisées par la
société SpringSource.
• Spring est composé de très nombreuses briques, mais
l’on peut utiliser uniquement les parties qui nous intéresse
sans se soucier des autres.
© British Telecommunications plc
Concepts de Spring
A partir des critiques portés sur la plateforme J2EE
« historique », Spring met en avant ces concepts.
• Robustesse
• Extensibilité
• Réutilisabilité
Spring essaye de proposer l’état de l’art, les « best
practices ».
© British Telecommunications plc
Offres d’emplois en Java
Au moins 50% des
nouveaux projets java
en 2009 utilise Spring.
© British Telecommunications plc
Que fait Spring?
© British Telecommunications plc
Tout d’abord : que faites vous?
JAVA
JAVA
Hibernate
Struts
JDBC
JPA
JSF
Tapestry
GWT
Flex
JMS
Axis
CXF
Metro
Junit JMX
AOP
AspectJ
TestNG
Unitils
DBUnit
JDO
JSP / Servlet
XSLT
Portlet
RMI
Mail
Quartz
Ibatis
JCA
Itext
Restlet
Groovy
Jruby
Grails
© British Telecommunications plc
Intégration des APIS
• Maîtrisez vous toutes ces API?
• Comment se passe l’intégration
avec votre application?
• Connaissez vous les bonnes
pratiques de chacune?
© British Telecommunications plc
La stack Spring
Spring
Spring Core
Core
IOC AOP
Spring
Spring DAO
DAO Spring
Spring Context
Context
Spring
Spring
Remoting
Remoting
…
Spring
Spring
ORM
ORM
Spring
Spring
JDBC
JDBC Spring
Spring Web
Web
JMS
Web
Services
…
JDO
Hibernate
…
Spring
Spring
MVC
MVC
Struts
JSF
…
Test
© British Telecommunications plc
Injection de dépendance et
AOP
© British Telecommunications plc
IOC – Inversion Of Control
• L’IOC est un Design Pattern permettant de casser les
dépendances.
• Il se base sur la notion d’abstraction commune (interface
en Java).
• C’est le framework qui à la charge d’injecter les
dépendances.
Classe A Classe B
Dépendance
© British Telecommunications plc
IOC – Inversion Of Control (2)
Interface I
Classe A
Dépendance
Classe B
Module A Module B Module C
Framework
© British Telecommunications plc
DI avec XML (Demo)
<bean id="shoppingDao"
class="fr.bt.springdemo.ShoppingDaoImpl" /
>
<bean id="shoppingService"
class="fr.bt.springdemo.ShoppingService">
<property name="shoppingDao"
ref="shoppingDao"></property>
</bean>
© British Telecommunications plc
DI avec Javaconfig (Demo)
@Configuration
public class Config {
@Bean
public ShoppingDao shoppingDao(){
return new ShoppingDaoImpl();
}
@Bean
public ShoppingService shoppingService(){
ShoppingService service = new ShoppingService();
service.setShoppingDao(shoppingDao());
return service;
}
}
© British Telecommunications plc
AOP
• L’AOP permet de séparer les différents préoccupations
techniques et fonctionnelles.
Préoccupations mélangés Préoccupations séparés
© British Telecommunications plc
Exemple de facilitateur :
JDBCTemplate
Exemple inspiré de :
SPRING Recipes – A Problem-Solution
Approach
Apress
© British Telecommunications plc
JDBCTemplate
Démo
© British Telecommunications plc
JDBCTemplate - Résumé
Avantages de la solution
• Séparation des couches. Découplage grâce à l’IOC.
• Uniformisation des Exceptions qu’elle que soit la
technologie de persistance.
• Diminution du volume de code grâce aux classes
utilitaires.
• Standardisation et simplification des transactions.
© British Telecommunications plc
Conclusion
© British Telecommunications plc
Conclusion
g La configuration par XML rend la configuration très verbeuse et
difficile à lire sur de grosses applications.
Éléments de solutions :
• Utiliser la configuration par annotations de Spring 2.5
• Utiliser les outils d’affichage de graphe de dépendance tel Spring IDE ou BeanDoc
(JavaDoc évolué avec les graphes de Spring)
Spring est très ouvert et ne limite pas les comportements :
Pour un même problème il existe parfois une multitude
de solutions différentes, ce qui peut être déroutant.
Si Spring facilite l’intégration et l’utilisation de librairies tierces,
la compréhension et la connaissance de celles-ci reste nécessaire.
Le comportement générique n’est pas forcément celui adapté à nos
besoins.
© British Telecommunications plc
Conclusion
• Spring a largement pénétré le monde industriel et jouit d’une
communauté importante et dynamique.
• Sa prise en main est très facile et très intuitive basée sur le principe
« Convention over Configuration »
• La documentation est très importante : le manuel de référence fait
590 pages, il existe plus de 20 livres sur Spring.
• Spring encadre les développements en instaurant les best practices
Java et J2EE.
• Spring est très modulaire et surtout très peu intrusif, on peut se
passer de Spring sur un composant et effectuer la configuration à la
main ou avec d’autres outils. On ne se lit pas « ad vitam eternam » à
Spring.
© British Telecommunications plc
Ressources
• Site officiel :
http://www.springsource.org
• Articles :
http://zekey.developpez.com/articles/spring/
http://www.springhub.com/
http://blog.springsource.com/
• Forum :
– Anglais : http://forum.springsource.org/
– Français : Forum developpez.com
• Livres :
– Spring par la pratique (édition eyrolles)
– Spring Recipes (Apress)

Contenu connexe

Similaire à Introduction à Spring.pdf

DEVASC_Module_8 - Plateformes cisco et Developpement.pptx
DEVASC_Module_8 - Plateformes cisco et Developpement.pptxDEVASC_Module_8 - Plateformes cisco et Developpement.pptx
DEVASC_Module_8 - Plateformes cisco et Developpement.pptx
TasnimBenAmmar
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
Ombotimbe Salifou
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
inesrdissi60
 

Similaire à Introduction à Spring.pdf (20)

Cours spring
Cours springCours spring
Cours spring
 
Spring 3 en production
Spring 3 en productionSpring 3 en production
Spring 3 en production
 
DEVASC_Module_8 - Plateformes cisco et Developpement.pptx
DEVASC_Module_8 - Plateformes cisco et Developpement.pptxDEVASC_Module_8 - Plateformes cisco et Developpement.pptx
DEVASC_Module_8 - Plateformes cisco et Developpement.pptx
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
 
Introduction JavaEE
Introduction JavaEEIntroduction JavaEE
Introduction JavaEE
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
 
Webcast Oracle - Gestion des risques liés à l'obsolescence et la sécurité de ...
Webcast Oracle - Gestion des risques liés à l'obsolescence et la sécurité de ...Webcast Oracle - Gestion des risques liés à l'obsolescence et la sécurité de ...
Webcast Oracle - Gestion des risques liés à l'obsolescence et la sécurité de ...
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
The Spring of Adobe Flex Remoting
The Spring of Adobe Flex RemotingThe Spring of Adobe Flex Remoting
The Spring of Adobe Flex Remoting
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
 

Plus de badrfathallah2 (19)

Java-Design-Patterns.pdf
Java-Design-Patterns.pdfJava-Design-Patterns.pdf
Java-Design-Patterns.pdf
 
design_pattern_tutorial.pdf
design_pattern_tutorial.pdfdesign_pattern_tutorial.pdf
design_pattern_tutorial.pdf
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
hibernate_tutorial.pdf
hibernate_tutorial.pdfhibernate_tutorial.pdf
hibernate_tutorial.pdf
 
Les Processus IAM.pdf
Les Processus IAM.pdfLes Processus IAM.pdf
Les Processus IAM.pdf
 
LE PROCESSUS DE GESTION DES HABILITATIONS.pdf
LE PROCESSUS DE GESTION DES HABILITATIONS.pdfLE PROCESSUS DE GESTION DES HABILITATIONS.pdf
LE PROCESSUS DE GESTION DES HABILITATIONS.pdf
 
PrésQL.pdf
PrésQL.pdfPrésQL.pdf
PrésQL.pdf
 
INTRODUCTION A LA FINANCE DE MARCHE.pdf
INTRODUCTION A LA FINANCE DE MARCHE.pdfINTRODUCTION A LA FINANCE DE MARCHE.pdf
INTRODUCTION A LA FINANCE DE MARCHE.pdf
 
Collatéral_Management.pdf
Collatéral_Management.pdfCollatéral_Management.pdf
Collatéral_Management.pdf
 
Cash_management_et_paiements.pdf
Cash_management_et_paiements.pdfCash_management_et_paiements.pdf
Cash_management_et_paiements.pdf
 
Scrumguide.pdf
Scrumguide.pdfScrumguide.pdf
Scrumguide.pdf
 
Gestion de projets agiles avec Scrum.pdf
Gestion de projets agiles avec Scrum.pdfGestion de projets agiles avec Scrum.pdf
Gestion de projets agiles avec Scrum.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
SVN Tutorial.pdf
SVN Tutorial.pdfSVN Tutorial.pdf
SVN Tutorial.pdf
 
La Gestion de Projet.pdf
La Gestion de Projet.pdfLa Gestion de Projet.pdf
La Gestion de Projet.pdf
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
A Tutorial for GitHub.pdf
A Tutorial for GitHub.pdfA Tutorial for GitHub.pdf
A Tutorial for GitHub.pdf
 
JIRA-Tutorial-pdf.pdf
JIRA-Tutorial-pdf.pdfJIRA-Tutorial-pdf.pdf
JIRA-Tutorial-pdf.pdf
 
JIRA Fundamentals Course.pdf
JIRA Fundamentals Course.pdfJIRA Fundamentals Course.pdf
JIRA Fundamentals Course.pdf
 

Introduction à Spring.pdf

  • 1. Introduction à Spring Présentation du framework java/J2EE numéro 1 Nathaniel Richand 05/2009
  • 2. © British Telecommunications plc Introduction à Spring • Place de Spring dans l’écosystème Java • Que fait Spring? • Injection de dépendance et AOP • Exemple de facilitateur • Conclusion
  • 3. © British Telecommunications plc Place de Spring dans l’écosystème Java
  • 4. © British Telecommunications plc Qu’est ce que Spring? • Spring est un framework de développement Java basé sur la notion de conteneur léger. • Spring existe depuis 2002, la dernière version est la 2.5. La version 3.0 est en béta. • Spring est un projet Open Source de licence Apache dont le support et les évolutions sont réalisées par la société SpringSource. • Spring est composé de très nombreuses briques, mais l’on peut utiliser uniquement les parties qui nous intéresse sans se soucier des autres.
  • 5. © British Telecommunications plc Concepts de Spring A partir des critiques portés sur la plateforme J2EE « historique », Spring met en avant ces concepts. • Robustesse • Extensibilité • Réutilisabilité Spring essaye de proposer l’état de l’art, les « best practices ».
  • 6. © British Telecommunications plc Offres d’emplois en Java Au moins 50% des nouveaux projets java en 2009 utilise Spring.
  • 7. © British Telecommunications plc Que fait Spring?
  • 8. © British Telecommunications plc Tout d’abord : que faites vous? JAVA JAVA Hibernate Struts JDBC JPA JSF Tapestry GWT Flex JMS Axis CXF Metro Junit JMX AOP AspectJ TestNG Unitils DBUnit JDO JSP / Servlet XSLT Portlet RMI Mail Quartz Ibatis JCA Itext Restlet Groovy Jruby Grails
  • 9. © British Telecommunications plc Intégration des APIS • Maîtrisez vous toutes ces API? • Comment se passe l’intégration avec votre application? • Connaissez vous les bonnes pratiques de chacune?
  • 10. © British Telecommunications plc La stack Spring Spring Spring Core Core IOC AOP Spring Spring DAO DAO Spring Spring Context Context Spring Spring Remoting Remoting … Spring Spring ORM ORM Spring Spring JDBC JDBC Spring Spring Web Web JMS Web Services … JDO Hibernate … Spring Spring MVC MVC Struts JSF … Test
  • 11. © British Telecommunications plc Injection de dépendance et AOP
  • 12. © British Telecommunications plc IOC – Inversion Of Control • L’IOC est un Design Pattern permettant de casser les dépendances. • Il se base sur la notion d’abstraction commune (interface en Java). • C’est le framework qui à la charge d’injecter les dépendances. Classe A Classe B Dépendance
  • 13. © British Telecommunications plc IOC – Inversion Of Control (2) Interface I Classe A Dépendance Classe B Module A Module B Module C Framework
  • 14. © British Telecommunications plc DI avec XML (Demo) <bean id="shoppingDao" class="fr.bt.springdemo.ShoppingDaoImpl" / > <bean id="shoppingService" class="fr.bt.springdemo.ShoppingService"> <property name="shoppingDao" ref="shoppingDao"></property> </bean>
  • 15. © British Telecommunications plc DI avec Javaconfig (Demo) @Configuration public class Config { @Bean public ShoppingDao shoppingDao(){ return new ShoppingDaoImpl(); } @Bean public ShoppingService shoppingService(){ ShoppingService service = new ShoppingService(); service.setShoppingDao(shoppingDao()); return service; } }
  • 16. © British Telecommunications plc AOP • L’AOP permet de séparer les différents préoccupations techniques et fonctionnelles. Préoccupations mélangés Préoccupations séparés
  • 17. © British Telecommunications plc Exemple de facilitateur : JDBCTemplate Exemple inspiré de : SPRING Recipes – A Problem-Solution Approach Apress
  • 18. © British Telecommunications plc JDBCTemplate Démo
  • 19. © British Telecommunications plc JDBCTemplate - Résumé Avantages de la solution • Séparation des couches. Découplage grâce à l’IOC. • Uniformisation des Exceptions qu’elle que soit la technologie de persistance. • Diminution du volume de code grâce aux classes utilitaires. • Standardisation et simplification des transactions.
  • 21. © British Telecommunications plc Conclusion g La configuration par XML rend la configuration très verbeuse et difficile à lire sur de grosses applications. Éléments de solutions : • Utiliser la configuration par annotations de Spring 2.5 • Utiliser les outils d’affichage de graphe de dépendance tel Spring IDE ou BeanDoc (JavaDoc évolué avec les graphes de Spring) Spring est très ouvert et ne limite pas les comportements : Pour un même problème il existe parfois une multitude de solutions différentes, ce qui peut être déroutant. Si Spring facilite l’intégration et l’utilisation de librairies tierces, la compréhension et la connaissance de celles-ci reste nécessaire. Le comportement générique n’est pas forcément celui adapté à nos besoins.
  • 22. © British Telecommunications plc Conclusion • Spring a largement pénétré le monde industriel et jouit d’une communauté importante et dynamique. • Sa prise en main est très facile et très intuitive basée sur le principe « Convention over Configuration » • La documentation est très importante : le manuel de référence fait 590 pages, il existe plus de 20 livres sur Spring. • Spring encadre les développements en instaurant les best practices Java et J2EE. • Spring est très modulaire et surtout très peu intrusif, on peut se passer de Spring sur un composant et effectuer la configuration à la main ou avec d’autres outils. On ne se lit pas « ad vitam eternam » à Spring.
  • 23. © British Telecommunications plc Ressources • Site officiel : http://www.springsource.org • Articles : http://zekey.developpez.com/articles/spring/ http://www.springhub.com/ http://blog.springsource.com/ • Forum : – Anglais : http://forum.springsource.org/ – Français : Forum developpez.com • Livres : – Spring par la pratique (édition eyrolles) – Spring Recipes (Apress)