280 likes | 386 Views
Gildas Cuisinier. Spring 3.0. 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
E N D
Gildas Cuisinier Spring 3.0
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
Agenda • Rétrospective de Spring • Spring 3.0 • Supports, dépréciations et suppressions • Présentation des nouveautés • Roadmap
Spring 1.0 • Mars 2004 • Alternative légère au EJB 2 • Fonctionnalités : • Injection • AOP • Support de Jdbc, Hibernate, iBatis, JDO, .. • Framework Web
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
Spring 1.2 • Mai 2005 • DTD améliorée pour configuration plus souple • Alias, import • Premier support du JDK 5 ! • @Transactional, …
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
Spring 2.5 • Novembre 2007 • Nouveaux namespaces : • JMS • Context • Annotations • Spring : IoC, Tests, Web • Standard JEE • Toujours compatible JDK 1.4
Spring 3.0 • Supports, dépréciations et suppressions • Nouveautés de Spring 3 • Roadmap
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
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
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 MonBeanmonBean() { return new MonBeanImpl(); } }
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
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 • …
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')
Expression Language DEMO
REST • Intégré dans Spring @MVC • Fournir un support natif • Application visuelle Web • Service • Alternative : Utiliser JAX-RS et son modèle propre
REST - MVC @RequestMapping(value = "/speakers/{id}", method = GET) public Speaker speakerDetail(@PathVariable("id") long id) { returnthis.speakersService.findById(id); } URL : http://localhost:8080/app/speakers/1 • Intérêt ? • Cachable
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
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
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)
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
REST DEMO
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