Date post: | 02-Jan-2016 |
Category: |
Documents |
Upload: | caleb-macias |
View: | 25 times |
Download: | 0 times |
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 3.0
Gildas Cuisinier
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Gildas Cuisinier
Consultant JEE, Gam Consult• Basé au Luxembourg, depuis 2 ans• Certifié Spring Framework
Responsable Spring, Developpez.com• Article technique, FAQ, Forum, Blog• Reporter pour différents évènements
Relecteur de Spring par la pratique, 2ème édition
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Agenda
Rétrospective de Spring Spring 3.0
• Supports, dépréciations et suppressions
• Présentation des nouveautés• Roadmap
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Rétrospective de Spring
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 1.0
Mars 2004 Alternative légère au EJB 2 Fonctionnalités :
• Injection• AOP• Support de Jdbc, Hibernate, iBatis, JDO, ..• Framework Web
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 1.0
Configuration xml, basée sur une DTD• Un seul tag : <bean>
Possibilité de métadonnées sur les classes • Basé sur Xdoclet• Utilisation :
• Transaction• MVC
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 1.2
Mai 2005 DTD améliorée pour configuration plus
souple• Alias, import
Premier support du JDK 5 !• @Transactional, …
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 2.0
Octobre 2006 Simplification de la configuration XML
• Basé sur XML Schema• Namespaces dédiés
• JEE, Transaction, AOP, Lang, Util
• Scope
Annotations AspectJ
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 2.5
Novembre 2007 Nouveaux namespaces :
• JMS• Context
Annotations • Spring : IoC, Tests, Web • Standard JEE
Toujours compatible JDK 1.4
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 3
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 3.0
Supports, dépréciations et suppressions Nouveautés de Spring 3 Roadmap
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Supports
JDK 1.5+• Rupture : JDK 1.4 n’est plus supporté
Dépréciation• Hiérarchie de contrôleur Web• Hiérarchie de classe pour Junit 3.8
Suppression• Le support de Commons Attributes• Le support de Toplink• Le support (héritage) de Struts 1.0
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Nouveautés
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring OXM
Inclusion du module de mapping Object / XML• Provient de Spring WS
Permet une abstraction des API communes • JAXB, JiBX, Xstream, Castor
Utilisation• Gestion des payload REST en XML• Accès aux données SQL XML
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
JavaConfig
Configuration par annotations• @Configuration, @Bean, @Lazy, @Primary, @Import, @Value
Version XML :• <beans>
<bean name=“monBean" class=“be.hikage.MonBeanImpl"/> </beans>
Version Annotation:• @Configuration
public class AppConfig { @Bean public MonBean monBean() { return new MonBeanImpl(); } }
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Expression Language
Syntaxe proche des Unified EL mais avec des fonctionnalités supplémentaires
Développé selon les besoins des projets du portfolio
Indépendant
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Expression Language
Supporte l’appel de méthode :• #{'Hello World'.concat('!')} => Hello World !
Supporte les Map, List, Properties• #{monArray[1]}• #{maMap[‘maCle’]}• #{ systemProperties['user.region']"}
Supporte les opérateurs• #{1==1} -> Vrai
…
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Expression Language
Attributs du contexte• systemProperties, systemEnvironnent• Beans• Web :
• contextParameters, contextAttributes• request, session
• Securite :• hasRole(), isFullyAuthenticated(), …• Ex : hasRole('ROLE_SUPERVISOR') and
hasIpAddress('192.168.1.0/24')
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Expression Language
DEMO
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST
Intégré dans Spring @MVC Fournir un support natif
• Application visuelle Web• Service
Alternative : Utiliser JAX-RS et son modèle propre
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST - MVC
@RequestMapping(value = "/speakers/{id}", method = GET)
public Speaker speakerDetail(@PathVariable("id") long id) {
return this.speakersService.findById(id);
}
URL : http://localhost:8080/app/speakers/1
Intérêt ?• Cachable
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST – HTTP Methods
REST : Utilisation les méthodes HTTP :• GET : Récupérer une ressource• POST : Ajouter une ressource• PUT : Modifier une ressource• DELETE : Supprimer une ressource
HTML ne gère que GET / POST• Solution : HiddenHttpMethodFilter• Taglib Spring MVC utilise cette solution
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST – Content Negociation
URL = Resource Plusieurs représentations Solution :
ContentNegotiatingViewResolver• Délègue aux autres ViewResolver• Sélectionne celui qui correspond à la demande
@RequestBody• HttpMessageConverter
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST - Client
RestTemplate• DELETE :
• delete(String url, String… urlVars)
• GET : • getForObject(String url,Class responseType,String…
urlVars)
• POST• postForLocation(String url, Object request,String… vars)• postForObject(String url, Object request, Class
responseType, String… vars)
• PUT • put(String url, Object request,String…urlVars)
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST - Client
HttpMessageConverter• 4 implémentations par défaut
• ByteArray, Form, String, Source
Utilisation de callback• Génération de la requête• Traduction de la réponse
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
REST
DEMO
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Roadmap
Copyright © BreizhJug – License Creative Commons 2.0 France – Paternité - Partage des Conditions Initiales à l'Identique
Spring 3.X Roadmap
Spring 3.0 RC1 : Aujourd’hui ?• Toute les fonctionnalités, et documenté
Spring 3.0 GA : Octobre• Dépendant des retours de la RC1
Spring 3.1 : Début 2010• Support complet de JEE 6