Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.



Documents pareils
Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Compte Rendu d intégration d application

Auto-évaluation Aperçu de l architecture Java EE

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Cours en ligne Développement Java pour le web

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Introduction à la plateforme J2EE

Cedric Dumoulin (C) The Java EE 7 Tutorial

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

les techniques d'extraction, les formulaires et intégration dans un site WEB

Alfstore workflow framework Spécification technique

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Plan. Department of Informatics

CQP Développeur Nouvelles Technologies (DNT)

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

1. Installation d'un serveur d'application JBoss:

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Application web de gestion de comptes en banques

Patrons de Conception (Design Patterns)

Environnements de Développement

Refonte front-office / back-office - Architecture & Conception -

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Expert technique J2EE

Un serveur d'archivage

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

PRODUCTS LIST (updated 11th January 2010)

Java Aspect Components (JAC)

Single Sign-On open source avec CAS (Central Authentication Service)

Vulgarisation Java EE Java EE, c est quoi?

Urbanisation des systèmes d information

10. Base de données et Web. OlivierCuré

Tutoriel d installation de Hibernate avec Eclipse

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Java pour le Web. Cours Java - F. Michel

Messagerie asynchrone et Services Web

Formation en Logiciels Libres. Fiche d inscription

Une Histoire de Migration Agile

Web Tier : déploiement de servlets

GECKO Software. Introduction à MOBIDICK. Modular But Integrated Application Framework

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Shibboleth. David Verdin - JOSY "Authentification centralisée pour les applications web" - Paris - 4 février mai

SITE WEB E-COMMERCE ET VENTE A DISTANCE

JOnAS 5. Serveur d application d

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

CAS, la théorie. R. Ferrere, S. Layrisse

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

APIs de table pour SQL Server

Java et les bases de données

Mise en œuvre des serveurs d application

Jahia. Guillaume Monnette École Ingénieurs 2000 Marne-La-Vallée IR3

Présentation de SOFI 2.0

Gestion du service des enseignements

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

DOSSIER DEVELOPPEUR Projet CAR

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Projet Java EE Approfondi

Module BD et sites WEB

Devenez un véritable développeur web en 3 mois!

Spring par la pratique

JOnAS Day 5.1. Outils de développements

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

Evaluation Idéopass Cahier d analyse technique

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Introduction à. Oracle Application Express

Logiciel de gestion d emploi du temps

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Application Web et J2EE

Consultant MOE/Référent technique JAVA/J2EE JSF, RICH FACES

Problématiques des développements Java/J2EE

Accès aux bases de données

NFP111 Systèmes et Applications Réparties

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

WebSSO, synchronisation et contrôle des accès via LDAP

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

4. SERVICES WEB REST 46

Présentation de la solution Open Source «Vulture» Version 2.0

Projet de Java Enterprise Edition

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Le moteur de workflow JBPM

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Introduction aux «Services Web»

F O R M A T I O N CATALOGUE

Serena Software. Damien Terrien Solution Architect

Augmenter la disponibilité des applications JEE grâce au clustering : Le projet open source JShaft

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Livre Blanc WebSphere Transcoding Publisher

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Transcription:

Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.

VUE D ENSEMBLE Considérer comme une alternative /remplacement au modèle Enterprise JavaBean (EJB) Flexible Intégrer à d autres langages de programmation (e.g..net) Réponse à des travaux de développements considérés comme lourd JDBC LDAP Web Services Services offerts IoC Inversion of Control ou Injection de dépendance Programmation orientée aspect Services d abstraction (ORM, JDBC, Web, Remoting.)

LA STACK SPRING

The IoC container Spring Expression Langage (SpEL) Internationalisation Testing

INJECTION DE DÉPENDANCE L IoC est un «Design Pattern» permettant de casser les dépendances. Il se base sur la notion d abstraction commune (c.à.d. l interface en Java) C est le Framework qui a la charge d injecter les dépendances. Il existe 4 types d'injections de dépendances : Injection par constructeur Injection par interface Injection par factory Injection par champs Démonstration des types d injection

THE SPRING IOC CONTAINER AND BEANS Définir les Beans ou objets exposés Configurer les metadata Instancier le conteneur de dépendances Utiliser le conteneur Attention aux dépendances circulaires Démonstration de la configuration XML <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans> <! all bean definitions go here -->

AUTRES FRAMEWORK D INJECTION Pico Container (injection par constructeur) Excalibur (injection par Interface) Google Guice (injection par champs et constructeur) EJB 3

ANNOTATION-BASED CONTAINER CONFIGURATION Ajouter l espace de nom context dans la configuration XML de Spring Tag XML spécifique pour activer les annotations <context:annotationconfig/> Tag XML spécifique pour scanner les beans Spring <context:componentscan/> Les annotations Spring @Autowired Indique l injection de dépendance @Component Stéréotype Générique pour tout type de Bean géré par Spring @Scope("singleton") Définit le mode de proxy qui est réalisé pour le bean @Qualifier Supprime les doublons dans les noms des beans injectés @Value Permet d injecter la valeur de la propriété indiquée @Required Indique que la propriété est obligatoire pour le Bean @Lazy l instance du bean n est créé par Spring qu au moment où il est demandé (ou nécessaire) et non de manière systématique dans le cadre de l initialisation de l ApplicationContext

@AUTOWIRED @Autowired on Setter Methods Injection de dépendance par type; si une ou plusieurs références existent un erreur se produit. @Autowired on Properties Injection de dépendance par passage de paramètre ou par référence @Autowired on Constructors Indique que le constructeur devra être injecter avec une dépendance lors de la création du Bean, même si pas de déclaration du tag <constructor-arg> @Autowired with (required=false) option Par défaut la dépendance est obligatoire, en précisant required=false, l injection de la dépendance devient optionnel

@SCOPE Singleton Périmètre par défaut; une et une seule instance est créée pour l application et elle est partagée et réinjectée à chaque injection de dépendance Prototype Une instance est créée à chaque injection de donnée Request Création d une instance pour chaque requête HTTP Session Création d une instance au début d un session HTTP; cette instance est réutilisée pour la durée du cycle de vie de la session Global session Similaire à l annotation «session» mais dans le cadre des applications de type portlets Application Création d une instance au début de l application web; cette instance est réutilisée pour la durée de l application web Pour les scopes Request, Session, Global session et Application, le tag XML <aop:scoped-proxy/> doit être défini pour le Bean

Modèle de données Modèle de présentation DTO Data transfer Object LES AUTRES ANNOTATIONS @Service Stéréotype pour les beans de la couche de service @Repository Stéréotype pour les beans de la couche de persistance @Controller Stéréotype pour les beans de la couche de présentation(spring-mvc) Actions utilisateur Appels Web Service Présentation Connecteur Web Services @Controller Services Contrôleur de présentation Adapteurs/ Convertisseur de données @Service Services Métier @Repository DAO Data Access Object Base de données (MySQL, PostgreSQL, Oracle,.) Fichier plat Autre application

THE SPRING IOC CONTAINER AND BEANS Définir les Beans ou objets exposés Configurer les metadata Instancier le conteneur de dépendances Utiliser le conteneur Attention aux dépendances circulaires Démonstration de la configuration par annotation Annotation-based configuration Java-based configuration

SPRING EXPRESSION LANGAGE (SPEL) Spring EL est un langage d'expressions pour permettre l'interrogation et la manipulation d'objets au runtime : il permet de faciliter la configuration en utilisant un langage d'expressions. SpEL supporte de nombreuses fonctionnalités : expressions littérales, assignations, opérateurs, expressions régulières, manipulations de collections,... SpEL est utilisable : dans les fichiers de configuration Spring dans l'annotation @Value dans des JSP avec le tag <spring:eval> dans une application en utilisant une API dédiée

INTERNATIONALISATION Le Framework Spring offre la possibilité de gérer de fichiers de messages Les messages sont accessibles au travers du code suivant:

TESTING JUnit: "A programmer-oriented testing framework for Java". Used by the Spring Framework in its test suite. TestNG: A testing framework inspired by JUnit with added support for annotations, test groups, datadriven testing, distributed testing, etc. EasyMock: Java library " that provides Mock Objects for interfaces (and objects through the class extension) by generating them on the fly using Java s proxy mechanism. " Used by the Spring Framework in its test suite. JMock: Library that supports test-driven development of Java code with mock objects. Mockito: Java mock library based on the test spy pattern. DbUnit: JUnit extension (also usable with Ant and Maven) targeted for database-driven projects that, among other things, puts your database into a known state between test runs. The Grinder: Java load testing framework.

TESTING AVEC JUNIT Utilisation de la dépendence spring-test Configuration par annotation @RunWith(SpringJUnit4ClassRunner.class) :Intégration de Spring dans JUnit @ContextConfiguration :pour indiquer le ou les fichiers de configuration à prendre en compte @RunWith(SpringJUnit4ClassRunner.class) // specifies the Spring configuration to load for this test fixture @ContextConfiguration("repository-config.xml")

Data Access with JDBC DAO support Transaction Management Object Relational Mapping (ORM) Data Access

SPRING DATA ACCESS

JDBC DATASOURCE On retrouve la définition de l environnement JDBC comme suit: Driver URL de connexion Identifiant utilisateur de la BDD Mot de passe utilisateur de la BDD Quelle différence entre org.apache.commons.dbcp.basicdatasource et org.springframework.jdbc.datasource.drivermanagerdatasource?

TRAVAUX PRATIQUES Externaliser les informations de la datasource avec Maven Externaliser les informations de la datasource avec Spring en utilisant la classe PropertyPlaceholderConfigurer

SPRING JDBC Qui fait quoi? Action Spring You Define connection parameters. Open the connection. Specify the SQL statement. Declare parameters and provide parameter values Prepare and execute the statement. Set up the loop to iterate through the results (if any). Do the work for each iteration. Process any exception. Handle transactions. Close the connection, statement and resultset. X X X X X X X X X X

UTILISATION DE JDBC TEMPLATE Déclarer un bean JdbcTemplate, référençant une datasource Définir dans chaque classe DAO une propriété vers JdbcTemplate. Utiliser l instance de JdbcTemplate dans le corps de chaque méthode du DAO Déclarer chaque bean DAO avec la propriété référençant JdbcTemplate

UTILISATION DE JDBC TEMPLATE Créer une table T_MOTORISATION et insérer les motorisations possibles Créer une classe DAO EngineFirstDao avec la méthode insert pour créer une nouvelle motorisation Injecter la classe JdbcTemplate proposés par SPRING Tester Créer une classe DAO EngineSecondDao avec la méthode insert pour créer une nouvelle motorisation Injecter la classe NamedParamJdbcTemplate proposés par SPRING Tester Rajouter une méthode permettant de récupérer la liste des motorisations Utiliser l interface RowMapper pour la lecture de données Tester Reprendre le DAO EngineFirstDao en étendant la Classe JdbcDaoSupport de SPRING Tester

DAO PAR ANNOTATION Utilisation de l annotation @Repository Annotation à utiliser sur la classe d implémentation Déclaration de la balise <context:component-scan base-package= "nom_du_package" /> dans le fichier de configuration principal Scan automatique des annotations TRAVAUX PRATIQUES Appliquer l annotation sur les DAOs créés précédemment Modifier la configuration XML Rejouer les tests

GESTION DES TRANSACTIONS Spring propose plusieurs gestionnaires de transactions : org.springframework.orm.hibernate3.hibernatetransactionmanager : pour utiliser Hibernate org.springframework.transaction.jta.jtatransactionmanager : pour utiliser une implémentation de JTA fournie par un serveur d'applications org.springframework.jdbc.datasource.datasourcetransactionmanager : pour utiliser une datasource avec JDBC

GESTION DES TRANSACTIONS Une transaction gérée par Spring possède plusieurs caractéristiques : isolation : permet de préciser le niveau d'isolation de la transaction par rapport aux autres transactions. propagation : permet de préciser comment les traitements s'intègrent dans un contexte transactionnel timeout : le temps maximum durant lequel la transaction peut s'exécuter. Au delà, la transaction est annulée (rollback). read only : permet de préciser si les données sont lues uniquement ou si elles peuvent être mises à jour ceci à fin de permettre certaines optimisations

GESTION DES TRANSACTIONS CONFIGURATION PAR XML Utilisation de la dépendance spring-tx et spring-aspects La déclaration des transactions dans la configuration du contexte se fait dans le fichier XML en utilisant les espaces de nommages tx et aop. Il faut définir : un gestionnaire de transactions (TransactionManager) spécifique au mode de fonctionnement des accès aux données. un advice lié au gestionnaire de transactions qui va permettre de déclarer le mode de propagation des transactions dans les méthodes désignées par des motifs. la configuration des aspects à tisser sur les méthodes qui doivent être transactionnelles. Généralement, toutes les méthodes des services doivent être transactionnelles. Pour cela, le point de coupe doit utiliser une expression qui désigne toutes les méthodes et tous les services.

GESTION DES TRANSACTIONS CONFIGURATION PAR XML

TRAVAUX PRATIQUES Ecrire une classe de service permettant de créer une nouvelle motorisation pour un type de voiture Créer la motorisation Puis créer la paire TypeVoiture-Motorisation Volontairement ne pas tester si le type de voiture existe pour déclencher un rollback en base Tester le service sans gestion de transactions (Que se passe-t-il?) Inclure la gestion de transaction (Que se passe-t-il?)

CONFIGURATION PAR ANNOTATION Utilisation de la dépendance spring-tx Déclaration de la balise <tx:annotation-driven transactionmanager="txmanager"/> dans le fichier de configuration principal Utilisation de l annotation @Transactional qui s'utilise sur une classe ou une méthode. Sur une classe, elle s'applique automatiquement sur toutes les méthodes publiques de la classe. L'annotation @Transactional possède plusieurs attributs (dont propagation, readonly, isolation, timeout) Il est fortement recommandé de n'utiliser l'annotation @Transactional que dans des classes concrètes. Seules les invocations de méthodes depuis d'autres classes seront transactionnelles.

Tutoriel : http://jmdoudoux.developpez.com/cours/developpons/java/chapspring_transactions.php

TRAVAUX PRATIQUES Utiliser l annotation @Transactional sur la classe de service permettant de créer une nouvelle motorisation pour un type de voiture Tester

SPRING ORM & HIBERNATE

Web MVC Framework Integrating with other web frameworks

SPRING WEB

SPRING WEB FRAMEWORK Spring Web : Ensemble de classes utilitaires tournées vers le protocole HTTP Spring Web MVC : Spring (tout comme Struts) permet d'organiser une application Web selon le patron de conception MVC. Spring Web Portlet : Un portlet est une application informatique que l'on peut placer dans un portail web Spring WebSocket : Une WebSocket est une spécification d'un protocole permettant une communication bidirectionnelle et full duplex sur une seule socket TCP entre un client et un serveur. Spring Web Flow: Sous-projet de Spring Framework. Il permet de définir et d'exécuter des enchaînements de pages dans une application web.

INTÉGRATION DE SPRING ET STRUTS2 Utilisation de Struts 2 Spring Plugin pour rendre les beans Struts visible par le contexte Spring Intégration de la dépendance org.apache.struts:struts2-spring-plugin:jar Pour activer le contextespring dans une application Web, modifier le fichier web.xml: Ajouter la classe d écoute org.springframework.web.context.contextloaderlistener Préciser le ou les fichiers de configuration Spring à intégrer dans le contexte avec la déclaration du paramètre contextconfiglocation Déclarer tous les beans qui ont besoin de l injection de dépendence dans l application Documentation : https://struts.apache.org/docs/spring-and-struts-2.html Attention aux conflits avec les dépendances Spring

Spring Security vous permet de sécuriser vos applications web, qu elles utilisent Spring ou non. Documentation: http://www.mkyong.com/tutorials/spring-security-tutorials/

OBJECTIFS Maîtriser les étapes de sécurisation d une application web avec Spring. Mettre en œuvre ces étapes en sécurisant une application web S authentifier à travers une base de données avec Spring Mettre en œuvre différents filtres proposés par Spring Gérer les écrans en fonction des rôles utilisateurs

PROJET MAVEN Utilisation de la dépendance ci-dessous : Attention aux conflits avec les dépendances Spring

CONFIGURATION WEB.XML Déclarez l intercepteur de sécurité org.springframework.web.filter.delegatingfilterproxy comme filtre de l application La classe Spring DelegatingFilterProxy délègue la sécurité à une implémentation interne apellée springsecurityfilterchain, qui est dédiée à la gestion de la sécurité Spring. Notez que le filtre Spring Security doit être le premier à traiter la requête

CONFIGURATION SPRING Créer un fichier de configuration spring-security.xml contenant la stratégie de sécurité de l application Web Définir la stratégie de sécurité Web avec la balise Déclarer les utilisateurs autorisés Toutes les URLs de l application sont sécurisées (pattern="/**") Seuls les utilisateurs possédant un rôle ROLE_USER ont accès aux URLs 2 utilisateurs autorisés: identifiants, mots de passe et leur rôles. Les rôles entrent en jeu lors du contrôle d accès que Spring réalise sur les ressources/urls demandées, après l étape d authentification de l utilisateur.

TRAVAUX PRATIQUES Rajouter la configuration Spring Security dans le projet Configurateur Nissan Lancer l application (Que voyez-vous?)

ADAPTER LA PAGE DE LOGIN Généralement on utilise sa propre page de login Définir la page à afficher en cas de succès d identification ou d erreur dans la configuration Spring Modifier la configuration Struts2 pour prendre en compte la nouvelle page Exemple : Fichier Login.jsp URL à appeler lors de la validation du formulaire

ADAPTER LA PAGE DE LOGIN Généralement on utilise sa propre page de login Définir la page à afficher en cas de succès d identification ou d erreur dans la configuration Spring Modifier la configuration Struts2 pour prendre en compte la nouvelle page Exemple : Fichier spring-security.xml Autoriser les URL pour l index, la page de login et la page de déconnexion Indiquer à Spring Securiity que faire en cas de succès ou d échec d authentification

ADAPTER LA PAGE DE LOGIN Généralement on utilise sa propre page de login Définir la page à afficher en cas de succès d identification ou d erreur dans la configuration Spring Modifier la configuration Struts2 pour prendre en compte la nouvelle page Exemple : Fichier struts.xml Déclaration du package par défaut qui contient la page de login

TRAVAUX PRATIQUES Adapter la page d identification dans le projet Configurateur Nissan

AUTRES ASPECTS Validation des données Spring Expression Language (SpEL) AOP - Aspect Oriented Programming

MERCI

CONTENU 21H DE FORMATION Comprendre et utiliser ce Framework pour construire et définir l infrastructure d une application J2EE Facilitateur de développement et des phases de test Conteneur léger Similitudes avec un serveur J2EE Les fichiers de configuration pour les objets Recherche et injection de dépendances La couche d abstraction Les BEANS Autres Framework similaires