1 / 154

Formation Spring

Formation Spring. www.objis.com - Formation SPRING. 1. A propos d’Objis…. Centre de formation depuis 2005 Spécialiste technologies Java/J2ee Formations intra/inter entreprises 70% de pratique Paris – Lyon – Dakar www.objis.com. www.objis.com - Formation SPRING. 2. Atouts Objis.

alice-goff
Download Presentation

Formation Spring

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Formation Spring www.objis.com - Formation SPRING 1

  2. www.objis.com - Formation SPRING A propos d’Objis… • Centre de formation depuis 2005 • Spécialiste technologies Java/J2ee • Formations intra/inter entreprises • 70% de pratique • Paris – Lyon – Dakar • www.objis.com www.objis.com - Formation SPRING 2

  3. www.objis.com - Formation SPRING Atouts Objis • Audit technique de vos besoins • 70% de travaux pratiques • Clé USB avec outils et corrigés TP • Bilan pédagogique individuel • Ingénierie de financement • Veille technologique www.objis.com - Formation SPRING 3

  4. www.objis.com - Formation SPRING Veille technologique (cliquez sur les images)‏ www.objis.com - Formation SPRING 4

  5. www.objis.com - Formation SPRING SOMMAIRE (5j)‏ • Historique, définition et architecture • Concept clé N°1 : injection de dépendances ‏ • Concept clé N°2 : Programmation Orientée Aspect • Accès aux données JDBC • Intégration Spring / Hibernate ‏ • ‏ Gestion des transactions ‏ • Intégration Spring / Struts • Développement web avec Spring MVC ‏ • Gestion de la sécurité ‏ • Intégration Spring / JMS • Stratégies de test avec Spring • Conclusion – ressources – Rappels J2EE www.objis.com - Formation SPRING 5

  6. www.objis.com - Formation SPRING Etape 1 : Introduction Spring • Historique • Définition • Architecture www.objis.com - Formation SPRING 6

  7. www.objis.com - Formation SPRING SPRING : Historique • Rod Johnson (2002) • Faire avec un simple bean (POJO) ce qui était seulement possible avec EJBs • Environnement J2SE et J2EE • Simplicité • Testabilité • Couplage faible. Programmation par interfaces 7

  8. www.objis.com - Formation SPRING Mission du Framework Spring • Nous pensons que: • J2EE devrait être plus facile à utiliser • Il est préférable de programmer à travers des interfaces plutôt qu’à travers des classes. • La conception OO est plus importante qu’une toute technologie d’implémentation, comme J2EE. • Trop d’exceptions à gérer en Java ! Et si un framework nous permettait de mieux gérer les exceptions ? • Les tests sont essentiels. Et si un framework nous permettait de tester facilement notre application. • Nous souhaitons que: • Spring soit un plaisir à utiliser • Votre code applicatif “ne dépende pas” des APIs Spring. • Spring n’entre pas en compétition avec de bonnes solutions existantes, mais facilite l’intégration avec ces solutions.. (Par example, Hibernate est un bon outil de mapping O/R. Pourquoi en créer un autre ?.)‏ www.objis.com - Formation SPRING 8

  9. www.objis.com - Formation SPRING SPRING : définition • Framework et conteneur léger, à injection de dépendance et orienté aspect. • framework : permet configuration et création d'applications complexes à partir de composants réutilisables • conteneur : Spring contient et manage cycle de vie des composants susceptibles d'être injectés • léger : taille (2,8Mb) + surcharge JVM + non intrusif • à injection de dépendance : Spring vous injecte les composants dont vous avez besoin = JNDI Reverse. • orienté aspect : permet séparation logique métier et services techniques transversaux (Logs, Sécurité. Transaction..)‏ www.objis.com - Formation SPRING 9

  10. www.objis.com - Formation SPRING Conteneurs Spring • Plusieurs implémentations de Conteneurs héritant de 2 interfaces principales • BeanFactory (org.springframework.beans.factory.BeanFactory)‏ • Ex : XMLBeanFactory : définition beans dans XML • Convient si pb de ressources (Ex :tel portable) • ApplicationContext (org.springframework.context.ApplicationContext)‏ • Extension de BeanFactory • Ex : ClassPathApplicationContext,FileSystemXMLApplicationContext • Messages, I18n, publication d'évènements à des listeners 10

  11. www.objis.com - Formation SPRING SPRING : architecture modulaire • Jusqu'où votre appli. sera orientée SPRING ? www.objis.com - Formation SPRING 11

  12. www.objis.com - Formation SPRING SPRING : Modules clés • Core : fonctions essentielles. Utilise fabrique de bean (conteneur) org.springframework.beans.factory.BeanFactory. Support de l'injection. • Application Context : ce qui permet de faire de Spring un Framework : support internationalisation (i18n), cycle de vie, validations + services entreprises : acces JNDI, integration EJB, scheduling + intégration velocity/Freemarker • AOP :Gère la séparation préocupations transversales techniques. Possibilité créez vos propres aspects. Intégration avec AspectJ et basés sur interfaces de l'AOP Alliance • DAO / JDBC : accès aux données (gestion exceptions). • ORM : intégration framework ORM (hibernate, iBatis, JPA, JDO). Rq : avec DAO, permet de donner DAO à plusieurs frameworks ORM. www.objis.com - Formation SPRING 12

  13. www.objis.com - Formation SPRING SPRING : Modules clés • JMX : possibilité d'exposer vos beans comme composants JMX (Java Management Extension). Monitoring des beans. • JCA : connecteur JEE. Intégration Spring avec mainframes, et autres système d'information (ERP,CRM, MOM...)‏ • Spring MVC : Créer applications web Model-Vue-Controlleur avec Spring. • Portlets : Une page web = plusieurs portlets • Remoting : Accéder aux beans à travers le réseau. Intégration RMI, JAX-RPC, JAX-WS. • JMS : Intégration Java Messages Services www.objis.com - Formation SPRING 13

  14. www.objis.com - Formation SPRING SPRING : architecture modulaire • Exemple modules pour appli Struts/Hibernate www.objis.com - Formation SPRING 14

  15. www.objis.com - Formation SPRING Etape 2 : Injection de dépendances • Inversion de controle (IoC) et Injection de dép. • Sans injection : couplage fort entre objets • Avec injection : couplage faible www.objis.com - Formation SPRING 15

  16. www.objis.com - Formation SPRING Inversion de Contrôle (IoC)‏ • IoC = Votre code partage avec un framework le flot d'éxécution d'un programme. • Exemple avec les listeners de SWING • IoC différent de Injection de dépendances... www.objis.com - Formation SPRING 16

  17. www.objis.com - Formation SPRING Sans injection • Pour travailler avec un objet, nous le crééons (en dur) avec les techniques suivantes • New() • JNDI Lookup • Cela créée un couplage (statique) fort entre l'objet demandeur et l'objet apellé. www.objis.com - Formation SPRING 17

  18. www.objis.com - Formation SPRING Exemple de couplage fort www.objis.com - Formation SPRING 18

  19. www.objis.com - Formation SPRING Problèmes couplage fort • Pas de 'Saxophone' sans 'Musicien' • Difficile de tester la Classe Musicien • Difficile de réutiliser la Classe Musicien 1) Masquer l'implémentation avec Interfaces ! 2) Injection de code à l'exécution. solutions www.objis.com - Formation SPRING 19

  20. www.objis.com - Formation SPRING Avec injection • Pour travailler avec un objet possédant un savoir-faire, nous déclarons une interface que l'objet doit implémenter. • Spring injecte dynamiquement un objet implémentant cette interface.L'objet est déclaré dans un fichier xml de configuration, par défaut applicationContext.xml • Cela créée un couplage faible entre l'objet demandeur et l'objet apellé. Ils n'ont pas besoin de se connaître mutuellement. www.objis.com - Formation SPRING 20

  21. www.objis.com - Formation SPRING Exemple de couplage faible Ici les classes sont indépendantes. Couplage faible www.objis.com - Formation SPRING 21

  22. www.objis.com - Formation SPRING Déclaration Musicien et Saxophone REFERENCE : http://static.springframework.org/spring/docs/2.5.x/reference/beans.html Fichier de configuration de Spring : applicationContext.xml www.objis.com - Formation SPRING 22

  23. www.objis.com - Formation SPRING Lancement de l'Application 1)Chargement conteneur 2)Récupération bean 3) Utilisation bean joue Vive le vent... : TOOT TOOT TOOT www.objis.com - Formation SPRING 23

  24. www.objis.com - Formation SPRING Modification paramétrage... Le musicien change d'instrument... www.objis.com - Formation SPRING 24

  25. www.objis.com - Formation SPRING Lancement de l'Application 1)Chargement conteneur 2)Récupération bean 3) Utilisation bean joue Vive le vent... : PLINK PLINK PLINK www.objis.com - Formation SPRING 25

  26. www.objis.com - Formation SPRING Etape 3 : POA • Limites de la programmation Objet (POO) • Atouts de la programation Aspect (POA) • Exemple de mise en oeuvre POA Spring • Intégration avec @AspectJ www.objis.com - Formation SPRING 26

  27. www.objis.com - Formation SPRING Constats et limites de la POO • Phénomène de dispersion : dans le code d'une classe métier, on retrouve souvent du code 'technique' : log, sécurité, transaction... • Ce code technique correspondant à des 'préocupations transversalles' des différentes couches de l'application. • Maintenance du code et Réutilisabilité des composants diminués. www.objis.com - Formation SPRING 27

  28. www.objis.com - Formation SPRING Exemple : appli. gestion d'école www.objis.com - Formation SPRING 28

  29. www.objis.com - Formation SPRING Valeur ajoutée POA • La programmation Orientée Aspect (POA) permet de séparer le code métier et le code technique correspondant aux préocupations transversales. • Un aspect = une préocupation transversale. • Le tisseur d'aspect de Spring (Spring AOP) intercepte les méthodes métier et applique les aspects associés à cette méthode. • D'autres tisseurs d'aspects (AspectJ, JbossAOP) interceptent le changement d'état d'une variable , ainsi qu'un constructeur www.objis.com - Formation SPRING 29

  30. www.objis.com - Formation SPRING Programmation Orientée Aspect www.objis.com - Formation SPRING 30

  31. www.objis.com - Formation SPRING Exemple : appli. gestion d'école www.objis.com - Formation SPRING 31

  32. www.objis.com - Formation SPRING Exemple d'aspect : Spectateurs • Nous souhaitons que les spectateurs prennent place systématiquement avant qu'un musicien joue. • Nous souhaitons que les spectateurs applaudissent systématiquement après que le musicien joue. • Nous pourrons également demander d'étteindre les Tél portables avant la prestation, ou encore de demander remboursement si prestation de mauvaise qualité... www.objis.com - Formation SPRING 32

  33. www.objis.com - Formation SPRING Exemple d'aspect : Spectateur www.objis.com - Formation SPRING 33

  34. www.objis.com - Formation SPRING Mise en oeuvre aspect www.objis.com - Formation SPRING 34

  35. www.objis.com - Formation SPRING Pas d'impact sur code Applicatif ! 1)Chargement conteneur 2)Récupération bean 3) Utilisation bean joue Vive le vent... : Les spectateurs prennent place TOOT TOOT TOOT Les spectateurs applaudissement :BRAVO ! www.objis.com - Formation SPRING 35

  36. www.objis.com - Formation SPRING Vocabulaire POA • Aspect = service = préocupation transversale • Point de jonction (JoinPoint), • Coupe (Pointcut) • Greffon (Advice) • Cible (Target) = objet sur lequel appliquer aspect • Tissage = Application d'un aspect à une cible www.objis.com - Formation SPRING 36

  37. www.objis.com - Formation SPRING Greffon (advice)‏ • Greffon = un programme qui sera activé à un certain point d'exécution du système, précisé par un point de jonction. • Exemple : méthode 'applaudit' de l'aspect Spectateurs www.objis.com - Formation SPRING 37

  38. www.objis.com - Formation SPRING Types de greffon (advice)‏ • Before : exécution avant le point de jonction • After : exécution après le point de jonction • After-returning : éxécution après...si succès • After-throwing : éxécution après...si échec • Around : éxécution autour du point de jonction www.objis.com - Formation SPRING 38

  39. www.objis.com - Formation SPRING Point de jonction (Joinpoint)‏ • Point de jonction = Endroit spécifique dans le flot d'exécution du système, où il est valide d'insérer un greffon. • Il n'est pas possible d'insérer un greffon au milieu du code d'une fonction. • Par contre on pourra le faire avant, autour de, à la place ou après l'appel de la fonction. • Exemple : Le public applauditAPRES que chaque instrument soit joué www.objis.com - Formation SPRING 39

  40. www.objis.com - Formation SPRING Coupe (PointCut)‏ • Coupe = ensemble de points de jonction • Exprimé avec notation AspectJ. • Attribut 'expression' de la balise <aop:pointcut> • La coupe spécifie qu'un greffon d'oit être appliqué à toute méthode 'jouer', quelque soit son package (*), quelque soit le nombre d'arguments (..), quelque soit le type de retour.. <aop:pointcut id="servicePointcut" expression="execution(* *.jouer(..))"> Quelque soit paramètres Quelque soit le type de retour de la méthode Quelque soit classe/package www.objis.com - Formation SPRING 40

  41. www.objis.com - Formation SPRING Tissage et cycle de vie applicatif • Tissage = Application d'un aspect à une cible • 3 types de tissages • Tissage à la compilation (AspectJ). Nécessite compilateur spécial. • Tissage au chargement de l'application (AspectJ). Nécessite un ClassLoader spécial. • Tissage à l'exécution (Typique Spring POA). Ici le conteneur génère dynamiquement Proxy qui intercepte les appels et met en oeuvre l'aspect. www.objis.com - Formation SPRING 41

  42. www.objis.com - Formation SPRING Lien utiles Tisseurs d'aspects • AspectJ : http://eclipse.org/aspectj • Jboss AOP : http://labs.jboss.com/portal/jbossaop/index.html • Spring AOP : http://www.springframework.org www.objis.com - Formation SPRING 42

  43. www.objis.com - Formation SPRING Intégration d'aspect via @Aspect www.objis.com - Formation SPRING 43

  44. www.objis.com - Formation SPRING Intégration d'aspect via @Aspect Les spectateurs prennent place Les spectateurs éteignent tél. portables joue Vive le vent... : TOOT TOOT TOOT Les spectateurs applaudissement : BRAVO ! www.objis.com - Formation SPRING 44

  45. www.objis.com - Formation SPRING Aspects AspectJ dans spring • Le runtime AspectJ créé des aspects aspectJ (ex : JugeAspect.aj) • Le conteneur Spring peut manager les aspects aspectJ, même s'il ne les a pas créé ( attribut 'factory-method' de la balise <bean>). • L'aspect aspectJ peut avoir besoin de beans gérés par le conteneur Spring. (ex : JugeAspect fait une critique via un MoteurDeCritique) www.objis.com - Formation SPRING 45

  46. www.objis.com - Formation SPRING Etape 4 : accès aux données • Philosophie d'accès aux données • La gamme d'exceptions • Accès aux datasources • Framework JDBC de Spring www.objis.com - Formation SPRING 46

  47. www.objis.com - Formation SPRING Philosophie d'accès aux données • Utilisation interface DAO. • Le développeur a plusieurs choix d'implémentations de technologies de persistance (JDBC,Hibernate,JPA...) • Seules les méthodes d'accès sont exposées via l'interface. L'application est plus modulaire. • Les services sont facilement testables car non couplés à une implémentation donnée. • On peut créer des implémentations 'factices' facilitant tests unitaires et sans accès réel à la base, donc + rapide et avec moins de risque d'échec du à la base de données. www.objis.com - Formation SPRING 47

  48. www.objis.com - Formation SPRING Gestion Exceptions • Comment gérer exceptions d'accès données ? • SQLException (Jdbc) trop générique ! • Exceptions Hibernate nombreuses et plus détaillées mais propres à Hibernate ! Donne indication sur framework de persistance utilisé... • Réponse de Spring : DataAccessExceptionune gamme d'exceptions détaillées etindépendantes de votre stratégie de persistence. • Spring se charge de lever la bonne exception quelque soit le framework de persistance utilisé. www.objis.com - Formation SPRING 48

  49. www.objis.com - Formation SPRING Exceptions sans / avec SPRING www.objis.com - Formation SPRING 49

  50. www.objis.com - Formation SPRING Stratégie Template / Callback • Spring distingue étapes obligatoires d'accès aux données (Template, Ex : connection DB) et étapes facultatives (Callback, Ex : contexte transactionnel)‏ • Template = Bean , Callback = Bean • Inconvénient : vous devez créer le Callback. www.objis.com - Formation SPRING 50

More Related