1.66k likes | 2.03k Views
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.
E N D
Formation Spring www.objis.com - Formation SPRING 1
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
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
www.objis.com - Formation SPRING Veille technologique (cliquez sur les images) www.objis.com - Formation SPRING 4
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
www.objis.com - Formation SPRING Etape 1 : Introduction Spring • Historique • Définition • Architecture www.objis.com - Formation SPRING 6
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
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
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
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
www.objis.com - Formation SPRING SPRING : architecture modulaire • Jusqu'où votre appli. sera orientée SPRING ? www.objis.com - Formation SPRING 11
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
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
www.objis.com - Formation SPRING SPRING : architecture modulaire • Exemple modules pour appli Struts/Hibernate www.objis.com - Formation SPRING 14
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
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
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
www.objis.com - Formation SPRING Exemple de couplage fort www.objis.com - Formation SPRING 18
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
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
www.objis.com - Formation SPRING Exemple de couplage faible Ici les classes sont indépendantes. Couplage faible www.objis.com - Formation SPRING 21
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
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
www.objis.com - Formation SPRING Modification paramétrage... Le musicien change d'instrument... www.objis.com - Formation SPRING 24
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
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
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
www.objis.com - Formation SPRING Exemple : appli. gestion d'école www.objis.com - Formation SPRING 28
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
www.objis.com - Formation SPRING Programmation Orientée Aspect www.objis.com - Formation SPRING 30
www.objis.com - Formation SPRING Exemple : appli. gestion d'école www.objis.com - Formation SPRING 31
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
www.objis.com - Formation SPRING Exemple d'aspect : Spectateur www.objis.com - Formation SPRING 33
www.objis.com - Formation SPRING Mise en oeuvre aspect www.objis.com - Formation SPRING 34
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
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
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
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
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
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
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
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
www.objis.com - Formation SPRING Intégration d'aspect via @Aspect www.objis.com - Formation SPRING 43
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
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
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
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
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
www.objis.com - Formation SPRING Exceptions sans / avec SPRING www.objis.com - Formation SPRING 49
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