23
Introduction à Spring Présentation du framework java/J2EE numéro 1 Nathaniel Richand 05/2009

Presentation Spring

Embed Size (px)

DESCRIPTION

Voici une courte présentation de ce qu'est Spring.L'inversion de dépendance ainsi que la notion de facilitateur sont principalement mise en avant.

Citation preview

Page 1: Presentation Spring

Introduction à SpringPrésentation du framework java/J2EE numéro 1 Nathaniel Richand

05/2009

Page 2: Presentation Spring

© 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

Page 3: Presentation Spring

© British Telecommunications plc

Place de Spring dans l’écosystème Java

Page 4: Presentation Spring

© 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.

Page 5: Presentation Spring

© 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 ».

Page 6: Presentation Spring

© British Telecommunications plc

Offres d’emplois en Java

Au moins 50% des nouveaux projets java en 2009 utilise Spring.

Page 7: Presentation Spring

© British Telecommunications plc

Que fait Spring?

Page 8: Presentation Spring

© British Telecommunications plc

Tout d’abord : que faites vous?

JAVAJAVA

Hibernate

Struts

JDBC

JPAJSF

TapestryGWT

Flex

JMSAxisCXF

Metro

Junit JMX

AOPAspectJ

TestNGUnitils

DBUnit

JDOJSP / Servlet

XSLT

Portlet

RMI

Mail

Quartz

Ibatis

JCA

Itext

Restlet

GroovyJrubyGrails

Page 9: Presentation Spring

© 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?

Page 10: Presentation Spring

© British Telecommunications plc

La stack Spring

SpringSpring Core CoreIOC AOP

SpringSpring DAO DAO SpringSpring ContextContextSpringSpring

RemotingRemoting…

SpringSpring

ORMORMSpringSpring

JDBCJDBC SpringSpring WebWeb

JM

S

We

b S

erv

ice

s

JD

O

Hib

ern

ate

SpringSpring

MVCMVC Str

uts

JS

F

Tes

t

Page 11: Presentation Spring

© British Telecommunications plc

Injection de dépendance et AOP

Page 12: Presentation Spring

© 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 BDépendance

Page 13: Presentation Spring

© British Telecommunications plc

IOC – Inversion Of Control (2)

Interface IClasse A

Dépendance

Classe B

Module A Module B Module C

Framework

Page 14: Presentation Spring

© 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>

Page 15: Presentation Spring

© British Telecommunications plc

DI avec Javaconfig (Demo)

@Configurationpublic class Config {

@Beanpublic ShoppingDao shoppingDao(){

return new ShoppingDaoImpl();}

@Beanpublic ShoppingService shoppingService(){

ShoppingService service = new ShoppingService();service.setShoppingDao(shoppingDao());return service;

}}

Page 16: Presentation Spring

© 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

Page 17: Presentation Spring

© British Telecommunications plc

Exemple de facilitateur :JDBCTemplate

Exemple inspiré de :

SPRING Recipes – A Problem-Solution Approach

Apress

Page 18: Presentation Spring

© British Telecommunications plc

JDBCTemplate

Démo

Page 19: Presentation Spring

© 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.

Page 20: Presentation Spring

© British Telecommunications plc

Conclusion

Page 21: Presentation Spring

© British Telecommunications plc

Conclusion

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.

Page 22: Presentation Spring

© 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.

Page 23: Presentation 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)