Télécharger la présentation
1
Découverte des Framework : SPRING & JAXB
JEE Approfondi Découverte des Framework : SPRING & JAXB LACROIX Aymeric MAHOP Marc MICHELI Vincent NADARADJANE Ravi THOUVENIN Lionel
2
Présentation SPRING Conteneur léger Modulable Fichier de configuration
3 aspects importants : Pattern IoC Une couche d'abstraction Orienté aspect Spring s'appuie principalement sur l'intégration de trois concepts clés : l'inversion de contrôle ou injection de dépendance ; la programmation orientée aspect ; permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application une couche d'abstraction. La couche d'abstraction permet d'intégrer d'autres frameworks et bibliothèques avec une plus grande facilité.
3
Présentation SPRING De nombreux apports dont MVC2 Utilisateur
Dispatcher Servlet Contrôleur Modèle Vue Il prend donc en charge la création d'objets et la mise en relation d'objets par l'intermédiaire d'un fichier de configuration qui décrit les objets à fabriquer et les relations de dépendances entre ces objets. Le gros avantage par rapport aux serveurs d'application est qu'avec SPRING, vos classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs). C'est en ce sens que SPRING est qualifié de conteneur « léger ». Outre cette espèce de super fabrique d'objets, SPRING propose tout un ensemble d'abstractions permettant de gérer entre autres : Le mode transactionnel L'appel d'EJBs La création d'EJBs La persistance d'objets La création d'une interface Web L'appel et la création de WebServices Etape 1 : Dispatcher reçoit une requête de type *.htm Etape 2 : Suivant les requêtes => envoie vers un contrôleur et exécute la fonction associée Etape 3 : Le contrôleur renvoie un objet de type ModelandView qui prend en paramètre une vue, un modèle et un message
4
Présentation JAXB Java Architecture for XML Binding
Faciliter la manipulation d'un document XML en générant un ensemble de classes qui fournissent un niveau d'abstraction plus élevé que l'utilisation de SAX ou DOM. Création de schémas XSD Génération des objets Java qui traiteront les feuilles XML Rassemblement des données Redistribution des données analyse un schéma XML et génère à partir de ce dernier un ensemble de classes qui vont encapsuler les traitements de manipulation du document.
5
Application Schéma XML Binding compiler Classes générées Objets
Document XML Document XML API JAXB Marshal Unmarshal Application
6
Génération d’un fichier XML Lecture d’un fichier XML
Redistribution des données/Marshal Génération d’un fichier XML Création d’une instance JAXBContext jc = JAXBContext.newInstance(SCHEMA_TO_JAVA_DIR); Création d’un marshaller Marshaller m=jc.createMarshaller(); Définition des propriétés (indentation XML,…) m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); Génération du XML : m.marshal(contacts_list, out); Rassemblement des données/Unmarshal Lecture d’un fichier XML Création d'une fabrique : ObjectFactory fabrique = new ObjectFactory(); Dans laquelle on crée un objet JAXBElement<TheForum> contacts_list = of.createForum(forum); La création des objets nécessite la création d'un objet de type JAXBContext en utilisant la méthode statique newInstance(). Cette méthode prend en paramètre le nom du répertoire (ou package) contenant les classes annotées (ici "schema.repertoire") générées avec le compilateur XJC Il faut ensuite instancier un objet de type Unmarshaller qui va permettre de transformer un document XML en un ensemble d'objets. Un telle instance est obtenue en utilisant la méthode createUnmarshaller() de la classe JAXBContext. Ce dernier va vérifier que les données qu'il reçoit sont bien celles attendues. Si ce n'est pas le cas, des exceptions peuvent survenir. La méthode unmarshal() de la classe Unmarshaller se charge de traiter un document XML et retourne un objet du type complexe qui encapsule la racine du document XML JAXBElement. Elle possède de nombreuses surcharges à utiliser en fonction des besoins. Création d’une instance JAXBContext jc = JAXBContext.newInstance(SCHEMA_TO_JAVA_DIR); Création d’un Unmarshaller Unmarshaller u = jc.createUnmarshaller(); Chargement de l’arbre JAXBElement<TheForum> contacts = (JAXBElement<TheForum>) u .unmarshal(new FileInputStream(filename));
7
Organisation du travail en équipe
1ère étape : 2 groupes 1 sur la découverte de JAXB 1 sur la découverte de SPRING Mise en commun des informations Installation des Framework Développement Comparaison de Framework Guides d’utilisation
8
Les différentes étapes
JAXB Création du XML Création de la XSD Génération des Beans Fonctions Topics Posts Utilisateurs SPRING Mise en place MVC Réalisation des différentes JSP
9
SPRING/JAXB : Forces & Faiblesses
- Développement d’applications web facilement sans EJB - Conteneur léger - Boîte à outils -Fichier de configuration - Manipulation facile des documents XML - Configurable - Remplace une base de données - Génération de classes automatisées - Utilisation d’annotations - Reformatage des classes Spring : Conteneur léger => classes n'ont pas besoin d'implémenter une quelconque interface pour être prises en charge par le framework (au contraire des serveurs d'applications J2EE et des EJBs), permet de l'utiliser facilement sans avoir besoin de configurer, d'installer et de maintenir quoi que ce soit. Boîte à outils => au contraire d'autres frameworks, il vous laisse libre de n'utiliser que l'un ou l'autre de ses modules. Spring propose les services suivants (liste non-exhaustive) : Découplage des composants. Moins d'interdépendances entre les différents modules. Rendre plus aisés les tests des applications complexes c'est-à-dire des applications multicouches. Diminuer la quantité de code par l'intégration de frameworks tiers directement dans Spring. Permettre de mettre en oeuvre facilement la programmation orientée aspect. Un système de transactions au niveau métier qui permet par exemple de faire du "two-phases-commit". Un mécanisme de sécurité. Pas de dépendances dans le code à l'api Spring lors l'utilisation de l'injection. Ce qui permet de remplacer une couche sans impacter les autres. Une implémentation du design pattern MVC Un support du protocole RMI. Tant au niveau serveur qu'au niveau du client. Déployer et consommer des web-services très facilement. Echanger des objets par le protocole http JAXB : facile à utiliser pour consulter et modifier un document XML sans connaissance ni de XML ni de techniques de traitement de documents XML défauts - Utilisation d'annotations, ce qui oblige a alterer les classes d'origines (autrement dit impossible de l'utiliser sur une bibliotheque tierce) - Reformatage des classes pour avoir soit des methodes get/set annotés ou des variables annotées
10
Comparaison de Framework (1)
STRUTS Ressources très nombreuses Communauté très importante SPRING Concept de Vue très général Ne se limite pas seulement à un MVC dans un contexte web Meilleur design MVC Manipulation plus facile Struts permet la structuration d'une application Java sous forme d'un ensemble d'actions représentant des événements déclenchés par les utilisateurs de l'application. Ces actions sont décrites dans un fichier de configuration de type XML décrivant les cheminements possibles entre les différentes actions Struts : demande beaucoup de configuration / Spring Pour SPRING, le "meilleur design" est surtout dû à une meilleure séparation des responsabilités au niveau des différents éléments du MVC. Par exemple, avec SPRING, tu peux aussi faire du Struts, JSF, WebWork, Tapestry, XML, PDF, Excel,...Bref, le concept de vue est très général ce qui permet de mixer plusieurs technos de rendu. Tu bénéficie en plus de l'IoC pour configurer tes objets M et C, c'est donc pas mal. Tu as aussi SPRING WebFlow pour encore mieux travailler sur l'aspect navigation (mais tu n'es pas obligé de l'utiliser) M comme Model (ou comment fonctionne le data binding et la validation): - Struts oblige à étendre une classe concrete ActionForm ce qui interdit la réutilisation de ton domain model et il est donc impossible de travailler directement avec dans ton html. On est obligé de faire le lien entre ActionForm et le domain. - Spring permet de réutiliser le domain model - je ne connais pas trop le fonctionnement des transformations pour des objets autre que des String ou des primitives mais il semble que ce n'est pas très fameux - Spring fournit un support des PropertyEditor (voir norme JavaBeans) - la validation dans l'ActionForm ne la rend pas réutilisable dans le reste de l'appli. La validation peut également se faire avec Commons Validator qui utilise une approche à base de XML mais pour ma part je trouve ca assez peu intuitif (question de gout). - Spring s'appuie sur l'interface Validator pour la validation (des implémentations existent pour utiliser Commons Validator comme dans Struts) V comme Vue : - Struts fournit juste un support pour les JSP (il existe toutefois des librairies externes pour supporter d'autres technos : XML, Velocity) - Spring s'integre avec de nombreuses technos pour la vue : JSP, Velocity, FreeMarker, XML/XSL, Excel, PDF - Spring est facilement extensible et permet d'ajouter très simplement un support pour une autre technologie de présentation en respectant le principe du MVC. C comme controleur : - Les actions Struts (controleurs) doivent être threadsafe dans la mesure ou il n'existe qu'une seule instance de créée - Par défaut, les controleurs de Spring sont uniques (et donc threadsafe) mais la liberté est laissée au développeur de changer ce comportement de manière déclarative - L'ajout de fonctionnalités pour plusieurs controleurs de Struts doit se faire en utilisant l'héritage avec une classe abstraite mutualisant un certain nombre de comportements (manque de flexibilité, cf la deuxieme regle du GoF) - Spring utilise des HandlerInterceptors pour qui ajoute des comportements avant et après l'execution d'un controleur (très flexible car déclaratif) - Spring fournit plusieurs controleurs qui répondent aux cas les plus fréquents (formulaire, wizard, ...) et fournissent de nombreux points d'extensions qui ne laissent pas de doute sur comment bien les utiliser. Autres points dont il faut tenir compte : - Struts se dirige vers une approche plus orienté JSF (Shale) qui n'a plus grand chose à voir avec le Struts d'origine - La branche 1.x ne devrait plus trop évoluée (en dehors de la maintenance) - Personnellement (et je ne suis pas le seul), j'ai du mal à comprendre la stratégie de Struts à long terme - Les ressources sur Struts sont par contre très nombreuses - Spring ne se limite pas à un framework MVC et il y a de grande chance que tu deviennes plus efficace avec Spring MVC si tu l'utilises également pour les autres couches. Trapesty et Spring sont de très bons frameworks, mais ils sont très peu supportés. Il est donc difficile de se lancer dans l’aventure. Struts reste le framework de référence. Très utilisé, il éprouvé depuis un certain temps, même s’il faut fournir un travail plus important qu’avec ses concurrents.
11
Comparaison de Framework (2)
Faciliter la gestion de persistance des données Nécessite des fichiers de configuration et de mapping Simplicité de mise en place Hibernate JAXB Persistance gérée à partir de base de données (SGBD) relationnelle Rendre persistant un objet, c'est sauvegarder les objets existant en mémoire vive sur un support non volatile de telle sorte qu'un objet identique à cet objet pourra être recrée lors d'une session ultérieure. Hibernate apporte une solution aux problèmes d'adaptation entre le paradigme objet et les SGBD en remplaçant les accès à la base de données par des appels à des méthodes objet de haut niveau. Mapping : fichier XML qui fait le lien entre les objets java et la base de données L'adjectif « relationnel » ne fait pas référence ici aux liens entre les tables mais aux tables elles-mêmes. La relation étant un objet mathématique conteneur de données et l'algèbre relationnelle une collection d'opérateurs appliqué aux relations. Le concept permet de stocker et d’organiser de manière structurée et typée une grande quantité d’informations. Les SGBD (Système de Gestion de Base de Données) permettent de naviguer dans ces données et d’extraire (ou de mettre à jour) les informations voulues au moyen de requêtes. Uniquement la manipulation de fichiers XML pour gérer la persistance Manipulation facile des objets : appel à des méthodes de haut niveau pour remplacer les accès à la base de données
12
Difficultés Mise en place des frameworks Compréhension de SPRING
De nombreuses fonctionnalités
13
Démonstration
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.