Formation Spring Spécifique

Slides:



Advertisements
Présentations similaires
- Formation STRUTS 1 1.
Advertisements

Mais vous comprenez qu’il s’agit d’une « tromperie ».
Présentation de frameworks J2EE
Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
LES NOMBRES PREMIERS ET COMPOSÉS
Ma surprise du Zoo.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
JEE 5 - JSF F.Pfister 2 institut eerie Les technologies du web Servlets JSP MVC Model 1 : servlets + JSP MVC Model.
Licence pro MPCQ : Cours
Distance inter-locuteur
Plan Portlets La norme JSR-168 Qu'est-ce qu'une Portlet ?
Département Édition - Intégration SEMINAIRE SOA Migration du canal Esup MonDossierWeb Olivier Ziller / Charlie Dubois Université Nancy 2 16 octobre 2007.
Les numéros
Les identités remarquables
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Smart House System Framework Vincent Chicherie
Formation au portail SIMBAD
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Exposé de Système - Informatique et Réseau
51 Les technologies XML Cours 7 : Utilisations dXML Janvier Version 1.0 -
Sirop de Liège « industriel »
Projet Webase. I. La définition du projet 1. Lexistant : Webase 4 2. Cahier des charges 3. La répartition des données 4. Le modèle de données 5. Le choix.
Design Pattern MVC En PHP5.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Présentation des frameworks pour Java EE
Injection de dépendances
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
Les Enterprise Service Bus
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Projet JAVA EE Approfondi
Le Concours de Conaissance Francais I novembre 2012.
Titre : Implémentation des éléments finis sous Matlab
La voyage de Jean Pierre
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
LES NOMBRES PREMIERS ET COMPOSÉS
Développement d’application web
1 INETOP
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Titre : Implémentation des éléments finis en Matlab
1 INETOP
Projet de Master première année 2007 / 2008
Adaptée du cours de Richard Grin
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
‘‘Open Data base Connectivity‘‘
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
19 Mai 2009 CADOT, ROMON, NOEL, GUILLOUET, MONGENET-LAMAISON.
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Java Enterprise Edition, anciennement J2EE
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
Outil de gestion des cartes grises
Exercice de vérification 1 p
Découverte des Framework : SPRING & JAXB
HIBERNATE Mapping Objet / base de données relationnelle
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Struts.
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Transcription de la présentation:

Formation Spring Spécifique 1 1 1

SOMMAIRE‏ Historique, définition et architecture (p3) Concept clé N°1 : injection de dépendances (p13) DEV : Intégration Spring / JMS (p31) DEV : Intégration Spring / Struts (p24) Conclusion – ressources – Rappels J2EE (p46) 2 2

Etape 1 : Introduction Spring Historique Définition Architecture 3 3

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

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 ?.)‏ 5 5

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..)‏ 6 6

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

SPRING : architecture modulaire Jusqu'où votre appli. sera orientée SPRING ? 8 8

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

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

SPRING : architecture modulaire Exemple modules pour appli Struts/Hibernate 11 11

SPRING : architecture modulaire Exemple modules pour appli Struts/JMS 12 12

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

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

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é. 15 15

Exemple de couplage fort 16 16

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

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

Exemple de couplage faible Ici les classes sont indépendantes. Couplage faible 19 19

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

Lancement de l'Application 1)Chargement conteneur 2)Récupération bean 3) Utilisation bean joue Vive le vent... : TOOT TOOT TOOT 21 21

Modification paramétrage... Le musicien change d'instrument... 22 22

Lancement de l'Application 1)Chargement conteneur 2)Récupération bean 3) Utilisation bean joue Vive le vent... : PLINK PLINK PLINK 23 23

Intégration Struts / Spring Valeur ajoutée et limite de Struts Ce qu'apporte Spring à Stuts Stratégie d'intégration : délégation de Proxy 24 24

Atouts Struts / Spring Struts apporte une couche MVC simple et bien connue des développeurs… …mais struts ne gère pas le Modèle !!! Spring apporte un accès simple en non intrusif à une couche métier performante Struts + Spring = bon duo ! 25 25

Technique : délégation d'actions Grace à la technique de ‘délégation d’actions’, il est possible d’avoir des classes étant à la fois des actions struts et des beans Spring. L’idée est d’utiliser une classe spécifique ( org.springframework.web.struts.DelegatingAction Proxy ) afin de déléguer à Spring la gestion de l’action struts. Ces ‘nouvelles actions struts’ ont des capacités bien supérieures aux actions classiques, réduisant ainsi les faiblesses de Struts. 26 26

Mise en oeuvre Struts + Spring Dans la pratique, nous continuons à coder actions struts normalement. La seule différence est que , dans struts- config.xml, la classe de l’action est org.springframework.web.struts.DelegatingActionProxy , <action path=‘/login’ name=‘loginForm’ type=‘org.springframework.web.struts.DelegatingActionProxy ’ parameter=‘method’ validate=‘false’ input=‘/WEB-INF/jsp/login.jsp’> <forward name=‘success’ path=‘/WEB-INF/jsp/login_success.jsp’> <forward name=‘failure’ path=‘/WEB-INF/jsp/login_failure.jsp’> </action> 27 27

Mise en oeuvre Struts + Spring Dans le fichier de configuration Spring actionservlet.xml, cette action est configurée de la façon suivante : <bean name=‘/login’ class=‘com.objis.demospring.LoginAction’> <property name=‘userManager’ > <ref bean=‘userManager’> </property> </bean> Spring réalise le lien avec l’action struts via le nom du bean, identique au chemin de l’action Struts ‘/login’ Ici LoginActrion est à la fois une action Struts complète (qui hérite de Action, DispatchAction…) et un bean Spring à part entière, bénéficiant de l’inversion de contrôle Ici le service (userMAnager) est injecté à l’action. Ce service apellera le bean userDAO … 28 28

Mise en oeuvre Struts + Spring Dans Les ‘nouvelles actions Struts’ : ne lient plus la couche présentation à une implémentation donnée de la couche métier. sont plus facilement testables de manière unitaire du point de vue de l’accès au service. disposent d’un mécanisme d’interception; étant des beans Spring, nous pouvons utiliser la POA pour intercepter leurs méthodes. Cela peut permettre d’ajouter des mécanismes transversaux de sécurité, monitoring, logs, cache, transaction… 29 29

2 avantages à retenir Spring va gérer parfaitement le ‘M’ de MVC, ce que Struts ne gère pas. Bonne pratique : injection d’objets dans l’action Struts (ex : service comme userMAnager) au lieu de passer par des new() ou des JNDI Lookup. Le Code plus modulaire avec meilleure testabilité. 30 30

Intégration Spring / JMS API JMS Fournisseur ActiveMQ JmsTemplate de Spring Envoi/réception de message 31 31

Présentation JMS Java Messages Service ( API 1.1 et 1.0.2) Envoyer / recevoir des messages Messages Synchones / asynchrones Queue (point-à-point) / Topics (abonnement) Produits : WebSphere MQ (IBM), Active MQ (Apache)‏ 32 32

API JMS javax.jms.Connection / ConnectionFactory javax.jms.Session javax.jms.Destination (Queue ou bien Topic ?)‏ javax.jms.Message / TextMessage javax.jms.MessageProducer (méthode send(Msg))‏ javax.jms.MessageConsumer 33 33

Queue / Topic 34 34

Intégration Spring / JMS Envoi / réception synchrone : JmsTemplate org.springframework.jms.core Messages asynchrones : Listeners JMS 1.0.2 et JMS 1.1 Gestion d'exceptions + réduction code 35 35

Active MQ Fournisseur JMS de la fondation Apache http://activemq.apache.org Port d'écoute par défaut : 61616 Fabrique de Connection (ActiveMQConnectionFactory) Queue / Topics 36 36

Config Active MQ dans Spring 37 37

Configuration JmsTemplate 38 38

JmsTemplate : gestion Exceptions 39 39

Envoi message avec JmsTemplate Injections Queue ou Topic ? Callback MessageCreator 40 40

Réception Synchrone de message 1 2 3 41 41

Réception Asynchrone de message 42 42

Réception Asynchrone de message 43 43

Namespace jms 44 44

Convertion de type : interface Converter 45 45

ANNEXES Ressources Architecture JEE Architecture en couche API JEE 46

Ressources 47 www.springframework.org API :http://static.springframework.org/spring/docs/2.5.x/api Livres : Spring in action (Craig walls. Editions Manning)‏ Spring par la pratique (Julien Dubois , Editions Eyrolles)‏ J2EE without EJB (Rod Johnson) 47 47

Architecture multicouche 48 48

Architecture J2EE 49 49

Livraisons J2EE 50 50

Services J2EE JNDI : Java Naming Directory Interface JCA : Java Connector Architecture JTA : Java Transaction API JPA : Java Persistence API JMS : Java Message Service JAAS : Java Authentication & Authorisation Service JAX-WS : Java API for XML Web Services JAXB : Java API for XML Binding 51 51