Presentation Spring, Spring MVC

50 %
50 %
Information about Presentation Spring, Spring MVC
Technology

Published on November 19, 2007

Author: nrichand

Source: slideshare.net

Présentation générale du framework Spring Auteur: RICHAND Nathaniel

Spring ? Présentation générale Architecture Spring IOC IOC? Spring IOC Spring MVC Rappel sur le pattern MVC Spring MVC Divers Web Services : Spring Remoting Spring DAO et ORM Autres Spring IDE pour Eclipse Bilan

Spring ?

Présentation générale

Architecture

Spring IOC

IOC?

Spring IOC

Spring MVC

Rappel sur le pattern MVC

Spring MVC

Divers

Web Services : Spring Remoting

Spring DAO et ORM

Autres

Spring IDE pour Eclipse

Bilan

Spring?

Spring?

Spring est un framework de développement Java basé sur la notion de conteneur léger . Spring existe depuis 2002 , la dernière version est la 2.5 . Cette version est toujours compatible avec java 1.4 . Spring est un projet Open Sources de licence Apache dont le support et les évolutions sont réalisées par la société Interface21. Spring est composé de très nombreuses briques , mais l’on peut utiliser uniquement les parties qui nous intéresse sans se soucier des autres. Spring met en avant les concepts de Robustesse, Extensibilité, Réutilisabilité.

Spring est un framework de développement Java basé sur la notion de conteneur léger .

Spring existe depuis 2002 , la dernière version est la 2.5 . Cette version est toujours compatible avec java 1.4 .

Spring est un projet Open Sources de licence Apache dont le support et les évolutions sont réalisées par la société Interface21.

Spring est composé de très nombreuses briques , mais l’on peut utiliser uniquement les parties qui nous intéresse sans se soucier des autres.

Spring met en avant les concepts de

Robustesse,

Extensibilité,

Réutilisabilité.

Spring Core IOC AOP Spring DAO Spring Context Spring Remoting … Spring ORM Spring JDBC Spring Web RMI Web Services … JDO Hibernate … Spring MVC Struts JSF …

Spring IOC L’IOC n’est pas une lubie , mais un enjeu primordial pour un développement propre et structuré. Inversion Of Control

Spring IOC

L’IOC est un Design-Pattern Remplacement du schéma classique : Schéma de l’IOC : Classe A Classe B Dépendance Interface I Classe A Dépendance Classe B

L’IOC est un Design-Pattern

Remplacement du schéma classique :

Schéma de l’IOC :

//Un controller qui va utiliser nos classes public class FormController{ FormulaireInterface form ; //Standard JavaBean public void setForm(FormulaireInterface f) { this.form = f; } … . afficheForm( form .getNomForm()); … } +getNomForm() : String +getNomForm() : String FormulaireImpl FormulaireInterface Ceci est plutôt du traitement «  métier » Comment se fait le lien entre les deux couches?

//Un controller qui va utiliser nos classes

public class FormController{

FormulaireInterface form ;

//Standard JavaBean

public void setForm(FormulaireInterface f) {

this.form = f;

}

… .

afficheForm( form .getNomForm());



}

Le lien entre les couches métier et contrôle est fait par la définition de « beans » dans Spring : < beans > < bean id = &quot;controllerForm&quot; class = &quot;mypackage.FormController&quot; > < property name = &quot; form &quot; ref = &quot; formulaire &quot; /> </ bean > < bean id = &quot; formulaire &quot; class = &quot;mypackage.FormulaireImpl&quot; / > </ beans > Spring prend en charge la création des objets et réalise les injections de donnés en se servant des « setter » (méthode conseillée). Les couches sont nettement séparées , sans dépendances , plus facilement maintenable et très facilement testables unitairement.

Le lien entre les couches métier et contrôle est fait par la définition de « beans » dans Spring :

< beans >

< bean id = &quot;controllerForm&quot; class = &quot;mypackage.FormController&quot; >

< property name = &quot; form &quot; ref = &quot; formulaire &quot; />

</ bean >

< bean id = &quot; formulaire &quot; class = &quot;mypackage.FormulaireImpl&quot; / >

</ beans >

Spring prend en charge la création des objets et réalise les injections de donnés en se servant des « setter » (méthode conseillée).

Les couches sont nettement séparées , sans dépendances , plus facilement maintenable et très facilement testables unitairement.

Spring MVC

Spring MVC

MVC est un pattern de conception visant à découper les applications en couches aux rôles distinctes. En J2EE la vue est classiquement réalisée par des JSP, le controller par une Servlet et le model par un JavaBean. Schéma récapitulatif :

MVC est un pattern de conception visant à découper les applications en couches aux rôles distinctes.

En J2EE la vue est classiquement réalisée par des JSP, le controller par une Servlet et le model par un JavaBean.

Schéma récapitulatif :

DispatcherServlet Controller View Model Request Response

<? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < web-app xmlns = &quot;http://java.sun.com/xml/ns/j2ee&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version = &quot;2.4&quot; > < servlet > < servlet-name > kickstart </ servlet-name > < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class > < load-on-startup > 0 </ load-on-startup > </ servlet > < servlet-mapping > < servlet-name > kickstart </ servlet-name > < url-pattern > *.htm </ url-pattern > </ servlet-mapping > </ web-app >

<? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?>

< web-app xmlns = &quot;http://java.sun.com/xml/ns/j2ee&quot;

xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot;

xsi:schemaLocation = &quot;http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version = &quot;2.4&quot; >

< servlet >

< servlet-name > kickstart </ servlet-name >

< servlet-class >

org.springframework.web.servlet.DispatcherServlet

</ servlet-class >

< load-on-startup > 0 </ load-on-startup >

</ servlet >

< servlet-mapping >

< servlet-name > kickstart </ servlet-name >

< url-pattern > *.htm </ url-pattern >

</ servlet-mapping >

</ web-app >

import org.springframework.web.servlet.mvc.SimpleFormController; public class FormController extends SimpleFormController { // Méthode appelée avant l’affichage du formulaire, retourne un bean associé au formulaire protected Object formBackingObject(HttpServletRequest request) { MyBean bean = (MyBean) request.getSession().getAttribute( &quot;myBean&quot; ); if (bean == null ) bean = new MyBean(); return bean; } // Méthode appelée lors du POST du formulaire, reçois le bean associé au formulaire protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object springBean, BindException errors) throws Exception { MyBean bean = (MyBean) springBean; request.getSession().setAttribute( &quot;myBean&quot; , bean); return new ModelAndView(); } }

GET POST Retourne une instance de la « command » (JavaBean) associée. Initialisation des binders, convertisseurs des données de la requête. Permets de binder des données complémentaires. Typiquement les contenus de listes déroulantes. Le modèle est exposé et la vue est appelée.

Liste des tags : • checkbox • errors • form • hidden • input • label • option • options • password • radiobutton • select • textarea La taglib de Spring MVC permet de réaliser automatiquement le binding entre le formulaire HTML et le javaBean adossé. Exemple : <html> < form:form commandName = &quot;myBean&quot; method = &quot;post&quot; > < form:hidden path = &quot;id&quot; /> < form:input path = &quot;firstName&quot; id = &quot;firstName&quot; /> < form:errors path = &quot;firstName&quot; cssClass = &quot;fieldError&quot; /> <br /> < form:input path = &quot;lastName&quot; id = &quot;lastName&quot; /> < form:errors path = &quot;lastName&quot; cssClass = &quot;fieldError&quot; /> </form:form> </html>

Liste des tags :

• checkbox

• errors

• form

• hidden

• input

• label

• option

• options

• password

• radiobutton

• select

• textarea

La taglib de Spring MVC permet de réaliser automatiquement le binding entre le formulaire HTML et le javaBean adossé.

Exemple :

<html>

< form:form commandName = &quot;myBean&quot; method = &quot;post&quot; >

< form:hidden path = &quot;id&quot; />

< form:input path = &quot;firstName&quot; id = &quot;firstName&quot; />

< form:errors path = &quot;firstName&quot; cssClass = &quot;fieldError&quot; />

<br />

< form:input path = &quot;lastName&quot; id = &quot;lastName&quot; />

< form:errors path = &quot;lastName&quot; cssClass = &quot;fieldError&quot; />

</form:form>

</html>

Handler mapping (mapping requête => controller) View resolution (sélection de la vue) Mécanisme de validation et de gestion des erreurs avancés (géré dans le cycle de vie d’une requête) Binding des données personnalisable. Evite le parsing manuel des données de formulaire. Support de plusieurs modèle de vue (Velocity, FreeMarker,…) …

Handler mapping (mapping requête => controller)

View resolution (sélection de la vue)

Mécanisme de validation et de gestion des erreurs avancés (géré dans le cycle de vie d’une requête)

Binding des données personnalisable. Evite le parsing manuel des données de formulaire.

Support de plusieurs modèle de vue (Velocity, FreeMarker,…)



Divers

Divers

Spring permet de simplifier la création et l’utilisation de Web Services grâce au module Spring Remoting. Il intègre les deux solutions classiques du marché : Axis et Xfire, en les simplifiant grandement. Création de Web Services : Exposition d’un POJO en tant que Web Services très simple en utilisant Xfire, création de la WSDL automatique par introspection. Plus besoins de générer les WSDL et Handler par tâche ANT! Utilisation de Web Services : Définition d’un JavaBean comme un client du Web Services, transparent pour le reste de l’application. Transformation des exceptions propre à chaque fournisseur en exceptions génériques.

Spring permet de simplifier la création et l’utilisation de Web Services grâce au module Spring Remoting. Il intègre les deux solutions classiques du marché : Axis et Xfire, en les simplifiant grandement.

Création de Web Services :

Exposition d’un POJO en tant que Web Services

très simple en utilisant Xfire, création de la WSDL

automatique par introspection. Plus besoins de

générer les WSDL et Handler par tâche ANT!

Utilisation de Web Services :

Définition d’un JavaBean comme un client du Web

Services, transparent pour le reste de l’application.

Transformation des exceptions propre à chaque

fournisseur en exceptions génériques.

Spring apporte son aide sur la couche DAO et sur les solutions de mapping objet/relationnel : en facilitant la création d’une couche DAO grâce à l’inversion de contrôle et à la séparation des couches. en simplifiant et standardisant l’utilisation des transactions dans la couche d’accès aux données. en proposant une hiérarchie d’exceptions standardisés . On retrouve ainsi les mêmes exceptions dans les couches supérieures, quelle que soit la technologie de persistance utilisée. en proposant des classes utilitaire simplifiant considérablement le nombres de lignes de code à produire pour chacune des technologies.

Spring apporte son aide sur la couche DAO et sur les solutions de mapping objet/relationnel :

en facilitant la création d’une couche DAO grâce à l’inversion de contrôle et à la séparation des couches.

en simplifiant et standardisant l’utilisation des transactions dans la couche d’accès aux données.

en proposant une hiérarchie d’exceptions standardisés . On retrouve ainsi les mêmes exceptions dans les couches supérieures, quelle que soit la technologie de persistance utilisée.

en proposant des classes utilitaire simplifiant considérablement le nombres de lignes de code à produire pour chacune des technologies.

Spring facilite l’intégration de services et d’API tierces, comme : Tiles ( http://tiles.apache.org ), mécanismes élégant de templates de pages web (Tiles 2 est géré mais requiert Java 5) Intégration d’ AJAX (DWR, Prototype, Scipt.aculo.us) ... Spring WebFlow permettant de définir les Flux et les modèles de navigations entre pages. Spring AOP , permettant de faire simplement de la programmation par aspect. Intégration de AspectJ. Spring Security (ACEGI) Spring Batch … ( http://www.springframework.org/sub-projects )

Spring facilite l’intégration de services et d’API tierces, comme :

Tiles ( http://tiles.apache.org ), mécanismes élégant de templates de pages web (Tiles 2 est géré mais requiert Java 5)

Intégration d’ AJAX (DWR, Prototype, Scipt.aculo.us)

...

Spring WebFlow permettant de définir les Flux et les modèles de navigations entre pages.

Spring AOP , permettant de faire simplement de la programmation par aspect. Intégration de AspectJ.

Spring Security (ACEGI)

Spring Batch

… ( http://www.springframework.org/sub-projects )

Aide sur l’écriture de fichiers XML : AutoComplétion Vérification structure des fichiers Contrôle des références et des dépendances Ajout d’un builder Affichage sous forme graphique des beans permettant de voir les liens et les dépendances Un récapitulatif des fonctions est disponible ici : http://springide.org/project/wiki/SpringideGuide Beans Graph Beans View

Aide sur l’écriture de fichiers XML :

AutoComplétion

Vérification structure des fichiers

Contrôle des références et des dépendances

Ajout d’un builder

Affichage sous forme graphique des beans permettant de voir les liens et les dépendances

Un récapitulatif des fonctions est disponible ici :

http://springide.org/project/wiki/SpringideGuide

Bilan

Bilan

La configuration par XML rend la configuration très verbeuse et difficile à lire sur de grosses applications. Elements de solutions : Utiliser la configuration par annotations de Spring 2.5 (nécessite Java 5) Utiliser les outils d’affichage de graphe de dépendance tel Spring IDE ou BeanDoc (JavaDoc évolué avec les graphes de Spring) Spring est très ouvert et ne limite pas les comportements : Pour un même problème il existe parfois une multitude de solutions différentes, ce qui peut être déroutant. Même si Spring est devenu un standard « de facto », ce n’est cependant pas une norme comme JSF ou les EJB. Si Spring facilite l’intégration et l’utilisation de librairies tierces, la compréhension et la connaissance de celles-ci reste nécessaire.

La configuration par XML rend la configuration très verbeuse et difficile à lire sur de grosses applications.

Elements de solutions :

Utiliser la configuration par annotations de Spring 2.5 (nécessite Java 5)

Utiliser les outils d’affichage de graphe de dépendance tel Spring IDE ou BeanDoc (JavaDoc évolué avec les graphes de Spring)

Spring est très ouvert et ne limite pas les comportements :

Pour un même problème il existe parfois une multitude

de solutions différentes, ce qui peut être déroutant.

Même si Spring est devenu un standard « de facto », ce n’est cependant pas une norme comme JSF ou les EJB.

Si Spring facilite l’intégration et l’utilisation de librairies tierces, la compréhension et la connaissance de celles-ci reste nécessaire.

Spring a largement pénétré le monde industriel et jouit d’une communauté importante et dynamique. Sa prise en main est très facile et très intuitive basée sur le principe «  Convention over Configuration  » La documentation est très importante et très bien réalisé : le manuel de référence fait 568 pages et est à jour! Spring encadre les développements en instaurant les best practices Java et J2EE. Spring est très modulaire et surtout très peu intrusif , on peut se passer de Spring sur un composant et effectuer la configuration à la main ou avec d’autres outils. On ne se lit pas «  ad vitam eternam » à Spring.

Spring a largement pénétré le monde industriel et jouit d’une communauté importante et dynamique.

Sa prise en main est très facile et très intuitive basée sur le principe «  Convention over Configuration  »

La documentation est très importante et très bien réalisé : le manuel de référence fait 568 pages et est à jour!

Spring encadre les développements en instaurant les best practices Java et J2EE.

Spring est très modulaire et surtout très peu intrusif , on peut se passer de Spring sur un composant et effectuer la configuration à la main ou avec d’autres outils. On ne se lit pas «  ad vitam eternam » à Spring.

Site officiel : http://springframework.org/ Articles : http://zekey.developpez.com/articles/spring/ http://www.springhub.com/ http://blog.interface21.com/main/ Forum : Anglais : http://forum.springframework.org/ Français : Forum developpez.com Livres : Spring par la pratique (édition eyrolles) Spring in action 2 nde édition (édition Manning)

Site officiel :

http://springframework.org/

Articles :

http://zekey.developpez.com/articles/spring/

http://www.springhub.com/

http://blog.interface21.com/main/

Forum :

Anglais : http://forum.springframework.org/

Français : Forum developpez.com

Livres :

Spring par la pratique (édition eyrolles)

Spring in action 2 nde édition (édition Manning)

Add a comment

Related presentations

Related pages

Aaron Schram - Computer Science | CU-Boulder

What's Spring MVC? A model-view-controller framework for Java web application Made to simplify the writing and testing of Java web applications
Read more

Mastering Spring MVC 3 - InfoQ: Software Development News ...

Keith Donald presents the Spring MVC3 programming model, detailing with examples: mapping HTTP requests, getting a request input, generating ...
Read more

PPT – Introduction to Spring MVC PowerPoint presentation ...

Title: Introduction to Spring MVC 1 Introduction to Spring MVC. Presented By ; Rick Witter ; PlatinumSolutions, Inc. Thursday, September 15th, 2005; 2 ...
Read more

Spring MVC - springdeveloper.com

MVC in Spring A single Front Controller servlet that dispatches requests to individual Controllers Proven pattern shown in Struts and Core J2EE Patterns
Read more

java - How should a spring MVC presentation layer be ...

To better understand what I'm trying to achieve here is an image of a typical Symfony2 application with only one bundle and a spring MVC app side by side:
Read more

presentation - View technologies for a spring mvc web ...

I'm developping a web application with Spring MVC, and I'm totally new in web design I want to write my Views, but i don't really know how to design all of ...
Read more

PPT - Spring MVC PowerPoint Presentation - SlideServe

Spring MVC. Margus Hanni, Nortal AS. 01.04.2013. Viited varasematele materjalidele …. 2012 – TÜ - Spring MVC – Roman Tekhov. What is a Web ...
Read more

Sleepless in Salt Lake City: Spring MVC 3.1 Presentation ...

A few months ago, I had a chance to present on Spring MVC. It was a simple 45 minute presentation but I had a blast doing it. A friend of mine ...
Read more