Spring 3.0                            Gildas Cuisiniervendredi 19 février 2010
Gildas Cuisinier                   Consultant Java depuis 3 ans                       Gam Consult Luxembourg              ...
Agenda                   Retrospective                   Spring 3.0                   Spring et JEE 6                     ...
Retrospectivevendredi 19 février 2010
Avant Spring                   EJB 2                       Modèle complexe                       Difficile à tester       ...
Spring 1.0                   Mars 2004                   Fonctionnalités                       Inversion du contrôle      ...
Instanciation                   Dépendance directe                   Difficile à tester                                   ...
Registre                           8vendredi 19 février 2010
IoC : Injection de dépendances                                 Injecte InstanceB                              Instancie   ...
IoC : Avantages                   POJO                   Dépendance uniquement sur les                   contrats         ...
Spring 1.0                   Configuration xml, basée sur une                   DTD                       Un seul tag : <b...
Spring 1.2                   Mai 2005                   Toujours basé sur une DTD                       Alias, import     ...
Spring 2.0                   Octobre 2006                   Simplification de la configuration                   XML      ...
Spring 2.5                   Novembre 2007                   Nouveaux namespaces :                       JMS              ...
Spring 3.0vendredi 19 février 2010
Spring 3.0                   Supports, dépréciations et                   suppressions                   Nouveautés de Spr...
Java 5 - ApplicationContext     <T> T getBean(Class<T> requiredType) throws     BeansException;                           ...
Java 5 - RowMapper     private class SpeakerMapper implements RowMapper<Speaker> {     	 	 public Speaker mapRow(ResultSet...
Java 5 - Varargs              Avant              public Integer saveOld(Speaker speaker) {              	 	 return templat...
Supports                   JDK 1.5+                       Rupture : JDK 1.4 n’est plus supporté                   Déprécia...
DEMO                           DROP INvendredi 19 février 2010
Spring OXM                   Inclusion du module de mapping                   Object / XML                       Provient ...
JavaConfig                   Configuration par annotations                       @Configuration, @Bean, @Lazy, @Primary, @I...
Version Annotation   @Configuration   public class AppConfig {   @Bean   public MonBean monBean() { return new   MonBeanIm...
Expression Language                   Syntaxe proche des Unified EL mais                   avec des fonctionnalités       ...
EL : Synthaxe	                                 Syntaxe                    Type                             objet.propriete...
EL : Synthaxe	                               Syntaxe                   Type                                2 == 2         ...
Expression Language                   Attributs du contexte                       systemProperties, systemEnvironnent     ...
EL : A venir                   Utilisation dans les projets du                   portfolio                   Exemple : Spr...
Spring MVC                   Namespace de configuration                   Support de REST                       Nouvelles ...
REST                   Intégré dans Spring @MVC                   Fournir un support natif                       Applicati...
Exemple                           32vendredi 19 février 2010
REST – Limitation HTML                   REST : Utilisation les méthodes                   HTTP :                       GE...
REST – Content Negociation                   URL = Resource                       Plusieurs représentations possibles     ...
REST - Client                   RestTemplate                       API de haut niveau pour REST                           ...
Support du scheduling                   Avant :                       Configuration verbeuse en XML                       ...
Support du scheduling                  Alternative : Annotation                      Cron                      Delai fixe ...
Support appel asynchrone                  Permet de rendre asynchrone                  l’appel d’une méthode              ...
Support appel asynchrone                   Cas 1 : Méthode sans résultat                   Cas 2 : Méthode avec résultat  ...
Support des DB embarquées                   Namespace jdbc                       Permet de configurer des bases embarquées...
Support Bean Validation                   JSR 303 – Bean Validation                       Standardisation de Hibernate Val...
Support Bean Validation                   Spring possède son propre système                   de validation               ...
Support JSR 330 - @Inject                   JSR initiée par SpringSource et                   Google                   Pro...
DEMO                           RESTvendredi 19 février 2010
Spring 3.X Roadmap                   Spring 3.1 : Début 2010                       Support complet de JEE 6               ...
Conclusion                   Spring 3.0                       Release majeure car rupture du JDK 1.4                      ...
Spring 3 et JEE 6vendredi 19 février 2010
Questionsvendredi 19 février 2010
Offert par Eyrolles                           49vendredi 19 février 2010
Upcoming SlideShare
Loading in …5
×

MarsJUG - Spring 3.0

518
-1

Published on

Spring 3.0 presentation at MarsJUG

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
518
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

MarsJUG - Spring 3.0

  1. 1. Spring 3.0 Gildas Cuisiniervendredi 19 février 2010
  2. 2. Gildas Cuisinier Consultant Java depuis 3 ans Gam Consult Luxembourg Certifié Spring Responsable Spring @ Developpez.com Article, FAQ, Forum, Compte rendu Relecteur technique 2vendredi 19 février 2010
  3. 3. Agenda Retrospective Spring 3.0 Spring et JEE 6 3vendredi 19 février 2010
  4. 4. Retrospectivevendredi 19 février 2010
  5. 5. Avant Spring EJB 2 Modèle complexe Difficile à tester 5vendredi 19 février 2010
  6. 6. Spring 1.0 Mars 2004 Fonctionnalités Inversion du contrôle Programmation Orienté Aspect (AOP) Support de Jdbc, Hibernate, JDO Framework Web 6vendredi 19 février 2010
  7. 7. Instanciation Dépendance directe Difficile à tester 7vendredi 19 février 2010
  8. 8. Registre 8vendredi 19 février 2010
  9. 9. IoC : Injection de dépendances Injecte InstanceB Instancie Instancie 9vendredi 19 février 2010 Instancie
  10. 10. IoC : Avantages POJO Dépendance uniquement sur les contrats Plus simple à tester 10vendredi 19 février 2010
  11. 11. Spring 1.0 Configuration xml, basée sur une DTD Un seul tag : <bean> Possibilité de métadonnées sur les classes Basé sur Xdocletvendredi 19 février 2010
  12. 12. Spring 1.2 Mai 2005 Toujours basé sur une DTD Alias, import Premier support du JDK 5 ! @Transactional, …vendredi 19 février 2010
  13. 13. 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 13vendredi 19 février 2010
  14. 14. Spring 2.5 Novembre 2007 Nouveaux namespaces : JMS Context Annotations Spring : IoC, Tests, Web Standard JEE Toujours compatible JDK 1.4 14vendredi 19 février 2010
  15. 15. Spring 3.0vendredi 19 février 2010
  16. 16. Spring 3.0 Supports, dépréciations et suppressions Nouveautés de Spring 3 Rest, Expression Languages, namespaces Spring 3.1 16vendredi 19 février 2010
  17. 17. Java 5 - ApplicationContext <T> T getBean(Class<T> requiredType) throws BeansException; Pas de casting SpeakerRepository repository = context.getBean(SpeakerRepository.class); 17vendredi 19 février 2010
  18. 18. Java 5 - RowMapper private class SpeakerMapper implements RowMapper<Speaker> { public Speaker mapRow(ResultSet rs, int rowNum) throws SQLException { return SpeakerBuilder.SpeakerWith() .id(rs.getInt(1)) .firstName( rs.getString(2)) .lastName(rs.getString(3)) .email(rs.getString(4)) .birthday(rs.getDate(5)) .build(); } } 18vendredi 19 février 2010
  19. 19. Java 5 - Varargs Avant public Integer saveOld(Speaker speaker) { return template.update("insert into speakers values (null, ?,?,?,?)", new Object[]{speaker.getFirstName(), speaker.getLastName(), speaker.getEmail(), speaker.getBirthday()}); } Spring 3 public Integer save(Speaker speaker) { return template.update("insert into speakers values (null, ?,?,?,?)", speaker.getFirstName(), speaker.getLastName(), speaker.getEmail(), speaker.getBirthday()); } 19vendredi 19 février 2010
  20. 20. 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 Le support de Struts 1.0 Suppression Le support de Commons Attributes Le support de Toplink 20vendredi 19 février 2010
  21. 21. DEMO DROP INvendredi 19 février 2010
  22. 22. Spring OXM Inclusion du module de mapping Object / XML Provient de Spring WS Permet une abstraction des API communes JAXB, JiBX, Xstream, Castor Unification des exceptions Utilisation Gestion des payload REST en XML 22vendredi 19 février 2010
  23. 23. 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 { 23vendredi 19 février 2010
  24. 24. Version Annotation @Configuration public class AppConfig { @Bean public MonBean monBean() { return new MonBeanImpl(); } } 24vendredi 19 février 2010
  25. 25. 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 25vendredi 19 février 2010
  26. 26. EL : Synthaxe Syntaxe Type objet.propriete Appel des getters/setter chaine.subString(2,3) Appel d’une méthode array[2] Accès tableau par index list[2] Accès liste par index map[‘clé’] Map 26vendredi 19 février 2010
  27. 27. EL : Synthaxe Syntaxe Type 2 == 2 Opérateur 2 == 2 and 3 == 4 (faux) Opérateur logique 2 == 1 or 4 ==4 (vrai) 5.00 matches ^-?d+(.d{2})?$ Regex prenom ?:‘inconu’ Opérateur elvis objet?.propriete?.proprieteFils Safe navigation 27vendredi 19 février 2010
  28. 28. Expression Language Attributs du contexte systemProperties, systemEnvironnent Beans Web : contextParameters, contextAttributes request, session 28vendredi 19 février 2010
  29. 29. EL : A venir Utilisation dans les projets du portfolio Exemple : Spring Security <http use-expressions="true"> <intercept-url pattern="/secure/**" access="hasRole(ROLE_SUPERVISOR) and hasIpAddress (192.168.1.0/24)" /> ... </http> 29vendredi 19 février 2010
  30. 30. Spring MVC Namespace de configuration Support de REST Nouvelles vues : Xml, Json, RSS Mécanisme de sélection de la vue selon la requête API client 30vendredi 19 février 2010
  31. 31. REST Intégré dans Spring @MVC Fournir un support natif Application visuelle Web Service Alternative : Utiliser JAX-RS et son modèle propre 31vendredi 19 février 2010
  32. 32. Exemple 32vendredi 19 février 2010
  33. 33. REST – Limitation HTML REST : Utilisation les méthodes HTTP : GET,POST,PUT,DELETE HTML ne gère que GET / POST Solution : HiddenHttpMethodFilter Taglib Spring MVC utilise cette solution 33vendredi 19 février 2010
  34. 34. REST – Content Negociation URL = Resource Plusieurs représentations possibles Solution : ContentNegotiatingViewResolver Délègue aux autres ViewResolver Sélectionne celui qui correspond à la demande 34vendredi 19 février 2010
  35. 35. 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 Reste extensible par utilisation de CallBack ‣ Génération de la requête ‣ Traduction de la réponse 35vendredi 19 février 2010
  36. 36. 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 : 36vendredi 19 février 2010
  37. 37. Support du scheduling Alternative : Annotation Cron Delai fixe Période fixe 37vendredi 19 février 2010
  38. 38. Support appel asynchrone Permet de rendre asynchrone l’appel d’une méthode Annotation @Asyn Délègue l’appel à un TaskExecutor 38vendredi 19 février 2010
  39. 39. Support appel asynchrone Cas 1 : Méthode sans résultat Cas 2 : Méthode avec résultat 39vendredi 19 février 2010
  40. 40. Support des DB embarquées Namespace jdbc Permet de configurer des bases embarquées Derby H2 HSQLDB Permet de configurer des scripts d’initialisation 40vendredi 19 février 2010
  41. 41. Support Bean Validation JSR 303 – Bean Validation Standardisation de Hibernate Validator Permet de configurer les contraintes de validation directement sur les objets métiers 41vendredi 19 février 2010
  42. 42. 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 42vendredi 19 février 2010
  43. 43. Support JSR 330 - @Inject JSR initiée par SpringSource et Google Propose un jeu d’annotations propre @Inject ↔ @AutoWired mais limité @Qualifier ↔ @Qualifier mais limité @Named ↔ @Qualifier sur le nom du Bean @Singleton @Scope 43vendredi 19 février 2010
  44. 44. DEMO RESTvendredi 19 février 2010
  45. 45. Spring 3.X Roadmap Spring 3.1 : Début 2010 Support complet de JEE 6 Support des conversations 45vendredi 19 février 2010
  46. 46. 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 46vendredi 19 février 2010
  47. 47. Spring 3 et JEE 6vendredi 19 février 2010
  48. 48. Questionsvendredi 19 février 2010
  49. 49. Offert par Eyrolles 49vendredi 19 février 2010

×