YaJUG - Spring 3.0

700 views

Published on

Spring 3.0 presentation at YaJUG

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
700
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

YaJUG - Spring 3.0

  1. 1. Spring 3.0 • Gildas Cuisinier9 Novembre 1
  2. 2. Gildas Cuisinier • Consultant JEE, Gam Consult – Basé au Luxembourg, depuis 2 ans – Certifié Spring Framework • Responsable Spring, Developpez.com – Articles techniques, FAQ, Forum, Blog – Reporter pour différents évènements • Relecteur de Spring par la pratique, 2ème édition<Date> 2
  3. 3. Agenda• Rétrospective de Spring• Spring 3.0 – Supports, dépréciations et suppressions – Présentation des nouveautés – Roadmap
  4. 4. Rétrospective deSpring
  5. 5. Spring 1.0• Mars 2004• Alternative légère au EJB 2• Fonctionnalités : – Injection – AOP – Support de Jdbc, Hibernate, iBatis, JDO, .. – Framework Web
  6. 6. 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
  7. 7. Spring 1.2• Mai 2005• DTD améliorée pour configuration plus souple – Alias, import• Premier support du JDK 5 ! – @Transactional, …
  8. 8. 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
  9. 9. Spring 2.5• Novembre 2007• Nouveaux namespaces : – JMS – Context• Annotations – Spring : IoC, Tests, Web – Standard JEE• Toujours compatible JDK 1.4
  10. 10. Spring 3
  11. 11. Spring 3.0• Supports, dépréciations et suppressions• Nouveautés de Spring 3• Roadmap
  12. 12. 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
  13. 13. Nouveautés
  14. 14. 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
  15. 15. 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(); } }
  16. 16. 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
  17. 17. 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• …
  18. 18. 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)
  19. 19. ExpressionLanguage DEMO
  20. 20. REST• Intégré dans Spring @MVC• Fournir un support natif – Application visuelle Web – Service• Alternative : Utiliser JAX-RS et son modèle propre
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. REST - Client• RestTemplate – API de haut niveau pour REST • Accès au méthodes GET, PUT, POST, DELETE, OPTIONS • Gestion des conversions des objets – HttpMessageConverter : 4 implémentations – ByteArray, Form, String, Source • Reste extensible par utilisation de CallBack – Génération de la requête – Traduction de la réponse Speaker speaker = new Speaker(); URI uri = template.postForLocation("http://localhost:8080/spring- rest/speakers/new", speaker);
  25. 25. REST DEMO
  26. 26. Support du scheduling • Avant : – Configuration verbeuse en XML • Définition du Scheduler • Définition du Trigger • Définition du Job • Définition du Bean « métier » • Après :<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 26
  27. 27. Support du scheduling • Alternative : Annotation – Cron – Delai fixe – Période fixe<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 27
  28. 28. Support appel asynchrone • Permet de rendre asynchrone une méthode – @Async – Délègue l’appel à un TaskExecutor • Deux cas possibles – Méthode sans résultat – Méthode renvoyant un résultat<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 28
  29. 29. Support des DB embarquées • Namespace jdbc – Permet de configurer des bases embarquées • Derby • H2 • HSQLDB – Permet de configurer des scripts d’initialisation<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 29
  30. 30. Support Bean Validation • JSR 303 – Bean Validation – Standardisation de Hibernate Validator – Permet de configurer les contraintes de validation directement sur les objets métiers – Permet de valider dans plusieurs couches • Présentation ( Spring MVC, JSF, .. ) • Service • Génération de DDL ( JPA, Hibernate )<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 30
  31. 31. Support Bean Validation • Spring possède son propre système de validation – org.springframework.validation.Validator • Propose un adapteur – LocalValidatorFactoryBean • Toutes couches – Validation manuelle via injection du validateur • Spring MVC – Autovalidation des objets « commande »<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 31
  32. 32. Support JSR 330 - @Inject • JSR initiée par SpringSource et Google • Propose un jeu d’annotations – @Inject @AutoWired mais limité – @Qualifier @Qualifier mais limité – @Named @Qualifier sur le nom du Bean – @Singleton – @Scope • Utilisation identique aux annotations standards – Utilisation mixte permise<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 32
  33. 33. Roadmap
  34. 34. Spring 3.X Roadmap• Spring 3.0 RC2 : – 11 Novembre selon la release note• Spring 3.0 GA : Fin Novembre – Dépendant des retours de la RC2• Spring 3.1 : Début 2010 – Support complet de JEE 6
  35. 35. Conclusion • Spring 3.0 – Release majeure car rupture du JDK 1.4 – Nouvelles fonctionnalités intéressantes • REST • SpEL • Bean Validation – Pas une révolution pour autant • Spring 3.1 – Release plus importante Support JEE 6<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 35
  36. 36. Questionslorrainejug@gmail.com | http://lorrainejug.blogspot.com 36
  37. 37. Offert par Eyrolles<Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 37

×