Spring MVC, IOC, AOP Réalisé par: Mustapha EL-KABOUS
Qu'est ce que Spring Framework pour construire et définir l'infrastructure d'une application java. Conteneur léger, c'est-à-dire une infrastructure similaire à un serveur d'application J2EE. Il prend donc en charge la gestion de cycle de vie des 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 (des EJBs comme exemple).
Spring VS Struts Le framework Struts ne s'intéresse qu'à la couche web et n'apporte pas d'outils pour les deux autres couches du 3tier. Le framework Spring, apparu plus récemment que Struts, a tout d'abord été apprécié pour les outils qu'il apportait pour la construction des architectures 3tier. Le concept (IOC) de Spring permet notamment de construire une architecture 3tier avec des couches indépendantes les unes des autres. Spring apporte des outils pour construire la couche d'accès aux données grâce à des classes d'intégration de frameworks tels que Hibernate ou JPA.
Composant de Spring Le coeur de Spring Framework 3.0 est composé d'un ensemble d'une vingtaine de modules qui sont regroupés en plusieurs parties: Spring Core Container: regroupe les modules de base pour mettre en oeuvre le conteneur AOP and Instrumentation : permet de mettre en oeuvre l'AOP Data Acces/Integration : regroupe les modules d'accès aux données Web : regroupe les modules pour le développement d'applications web Test : propose des fonctionnalités pour les tests automatisés avec Spring
Spring IOC Le coeur de SPRING et ce qui fait sa très grande force est la mise en œuvre du design pattern « Inversion Of Control » ou encore « Dependency Injection » L'idée du pattern IOC est très simple, elle consiste, lorsqu'un objet A a besoin d'un objet B, à déléguer à un objet C la mise en relation de A avec B. Par défaut, SPRING suppose que les fabriques déclarées sont des fabriques de type « singleton ».
Spring IOC Dependency de Spring core IOC (Maven): RELEASE org.springframework spring-core ${spring.version} org.springframework spring-context ${spring.version}
Spring IOC
Autocablage (autowiring) des beans en spring Sepecification de reference @Qualifier(« userbean ») private User user; Autoriser les annotation dans le declaration
Spring IOC Fichier de déclaration des beans Spring-Customer.xml
Spring IOC Test Main:
Spring MVC Rappel sur MVC : MVC : est un patron de conception visant a découper les applications en couches aux roles distinctes. Spring MVC aide à la création d'applications Web flexibles et faiblement couplés en basant sur le modèle de conception Modèle-Vue-Contrôleur EN JEE: – les vues sont les pages jsp – Le controller c’est la servlet – Le model c’est les JavaBeans
Spring MVC Etapes de fonctionnement de SpringMVC Quand une requête est envoyée à l'infrastructure Spring MVC la séquence suivante d'événements se produit: – Le DispatcherServlet reçoit la première demande. – Le DispatcherServlet consulte le HandlerMapping et appelle le contrôleur associé à la demande. – Le contrôleur traite la demande en appelant les méthodes de service appropriés et renvoie un objet ModeAndView au DispatcherServlet. Le ModeAndView objet contient les données de modèle et le nom de la vue. – Le DispatcherServlet envoie le nom de la vue à un ViewResolver de trouver la réelle Voir invoquer. – Maintenant, le DispatcherServlet passera l'objet de modèle à la vue pour rendre le résultat. – La vue à l'aide des données du modèle rendra le résultat à l'utilisateur.
Spring MVC Schéma globale de Spring MVC
Spring MVC Mise en œuvre de Hello World en Spring MVC 1.Creation d’un projet Maven Web Ajouter le dependencys org.springframework spring-webmvc ${spring.version} javax.servlet jstl 1.1.2
Configuration de fichier web.xml org.springframework.web.context.ContextLoaderListener action org.springframework.web.servlet.DispatcherServlet 1 action / contextConfigLocation /WEB-INF/action-servlet.xml
Création de DispatcherServlet action-servlet.xml
Création de contrôleur (class public class UserController public String getIndex(){ return "index"; method=RequestMethod.GET) public ModelAndView getHome(){ ModelAndView model=new ModelAndView(); model.addObject("msg", « Hello world »); model.setViewName("home"); return model; }
Création des Vues Création des vues : Index.jsp Home.jsp // afficher le contenu de msg -- Proposition d’une amélioration Spring IOC et MVC --Mapping des ressources
Spring AOP + AspectJ Annotation Spring AOP: est un module du framework Spring qui permet une mise en oeuvre d'une partie des fonctionnalités de l'AOP. Programmation Orientée Aspect ( AOP ) complète la programmation orientée objet (POO) en fournissant une autre façon de penser la structure du programme. En plus des classes, AOP vous donne aspects. Spring AOP: c'est juste un intercepteur à intercepter certains processus, par exemple, quand une méthode est exécuter, Spring AOP peut détourner la méthode d'exécution, et d'ajouter des fonctionnalités supplémentaires avant ou après l'exécution de la méthode. Spring AOP utilise des proxys ce qui ne nécessitent pas d'outils particulier comme c'est le cas avec AspectJ pour réaliser le tissage (classloader ou compilateur dédié).
Spring AOP + AspectJ Annotation Quelques annotations class d’interseptation des avant l’exécution de la apres l’exécution de la AfterReturning : Exécuter après la méthode retourne un résultat, d'intercepter le résultat retourné AfterThrowing - Exécuter après la méthode lève une exception
Spring AOP + AspectJ Annotation Jars et dépendances: Les jars de spring core org.springframework spring-aop ${spring.version} org.aspectj aspectjrt org.aspectj aspectjweaver
Configuration de AspectJ
Création de class de LoggingAspectJ
Test main ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Spring- Customer.xml"}); User user= (User)context.getBean("userbean"); System.out.println(user.sayHello("Mustapha")); System.out.println("votre nom :"+user.getNom()); Mais avant,on doit crée une classe User contient la méthode sayHello