SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
Spring 3.0

             • Gildas Cuisinier




9 Novembre



                                  1
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
Agenda


• Rétrospective de Spring
• Spring 3.0
  – Supports, dépréciations et suppressions
  – Présentation des nouveautés
  – Roadmap
Rétrospective de
Spring
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
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
Nouveautés
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 MonBean monBean() { 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) {
  return this.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
  – 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);
REST

       DEMO
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
Support du scheduling

     • Alternative : Annotation
         – Cron




         – Delai fixe




         – Période fixe




<Date>                  lorrainejug@gmail.com | http://lorrainejug.blogspot.com   27
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
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
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
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
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
Roadmap
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
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
Questions




lorrainejug@gmail.com | http://lorrainejug.blogspot.com   36
Offert par Eyrolles




<Date>         lorrainejug@gmail.com | http://lorrainejug.blogspot.com   37

Contenu connexe

Tendances

Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
ebiznext
 
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
Clément OUDOT
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
aliagadir
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
Aurelien Navarre
 

Tendances (20)

Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Architecture de services web de type ressource
Architecture de services web de type ressourceArchitecture de services web de type ressource
Architecture de services web de type ressource
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
Matinée Pour Comprendre LinID - Intégration du serveur Active Directory avec ...
 
2- Configuration des référentiels ODI 11
2- Configuration des référentiels ODI 112- Configuration des référentiels ODI 11
2- Configuration des référentiels ODI 11
 
Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...Une gestion efficace du changement de vos structures de données relationnelle...
Une gestion efficace du changement de vos structures de données relationnelle...
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructure
 
(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec Liquibase(R)évolutionnez vos bases de données avec Liquibase
(R)évolutionnez vos bases de données avec Liquibase
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Python + ansible = ♥
Python + ansible = ♥Python + ansible = ♥
Python + ansible = ♥
 
Liquibase en action
Liquibase en actionLiquibase en action
Liquibase en action
 
Liquibase
LiquibaseLiquibase
Liquibase
 
ParisJUG Spring Boot
ParisJUG Spring BootParisJUG Spring Boot
ParisJUG Spring Boot
 
Spring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien RoySpring data : Une api, quinze possibilités - Julien Roy
Spring data : Une api, quinze possibilités - Julien Roy
 
OpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP serverOpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP server
 
JSS2014 – Haute disponibilité dans Azure
JSS2014 – Haute disponibilité dans AzureJSS2014 – Haute disponibilité dans Azure
JSS2014 – Haute disponibilité dans Azure
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
Techdays 2009 - Active Directory Domain Services : bonnes pratiques et princi...
Techdays 2009 - Active Directory Domain Services : bonnes pratiques et princi...Techdays 2009 - Active Directory Domain Services : bonnes pratiques et princi...
Techdays 2009 - Active Directory Domain Services : bonnes pratiques et princi...
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 

En vedette

1 metz presentation_bucarest
1 metz presentation_bucarest1 metz presentation_bucarest
1 metz presentation_bucarest
lpjmn2011
 
Interpol bringing the united states to justice (french)
Interpol   bringing the united states to justice (french)Interpol   bringing the united states to justice (french)
Interpol bringing the united states to justice (french)
VogelDenise
 
présidentielle : les votes en Belgique
présidentielle : les votes en Belgiqueprésidentielle : les votes en Belgique
présidentielle : les votes en Belgique
lesoirbe
 
L'ordre du jour de l'AG Dexia
L'ordre du jour de l'AG DexiaL'ordre du jour de l'AG Dexia
L'ordre du jour de l'AG Dexia
lesoirbe
 
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-frenchMALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
VogelDenise
 
Backdwarf projet corssmedia utkukaplan versionfinale
Backdwarf projet corssmedia utkukaplan versionfinaleBackdwarf projet corssmedia utkukaplan versionfinale
Backdwarf projet corssmedia utkukaplan versionfinale
Pascal Minoche
 

En vedette (20)

9782212127829
97822121278299782212127829
9782212127829
 
Owf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-richesOwf2013 developper-projet-fonctionnellement-riches
Owf2013 developper-projet-fonctionnellement-riches
 
1 metz presentation_bucarest
1 metz presentation_bucarest1 metz presentation_bucarest
1 metz presentation_bucarest
 
Obsweb
ObswebObsweb
Obsweb
 
FRANCE
FRANCEFRANCE
FRANCE
 
Interpol bringing the united states to justice (french)
Interpol   bringing the united states to justice (french)Interpol   bringing the united states to justice (french)
Interpol bringing the united states to justice (french)
 
Les canaux ioniques
Les canaux ioniquesLes canaux ioniques
Les canaux ioniques
 
Lectures
LecturesLectures
Lectures
 
Projet serious game
Projet serious gameProjet serious game
Projet serious game
 
présidentielle : les votes en Belgique
présidentielle : les votes en Belgiqueprésidentielle : les votes en Belgique
présidentielle : les votes en Belgique
 
Atelier découverte Wikipédia - Brest 2011
Atelier découverte Wikipédia - Brest 2011Atelier découverte Wikipédia - Brest 2011
Atelier découverte Wikipédia - Brest 2011
 
L'ordre du jour de l'AG Dexia
L'ordre du jour de l'AG DexiaL'ordre du jour de l'AG Dexia
L'ordre du jour de l'AG Dexia
 
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-frenchMALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
MALCOLM X (BUILDING BRIDGES-Getting The DEVIL OFF YOUR BACK)-french
 
Backdwarf projet corssmedia utkukaplan versionfinale
Backdwarf projet corssmedia utkukaplan versionfinaleBackdwarf projet corssmedia utkukaplan versionfinale
Backdwarf projet corssmedia utkukaplan versionfinale
 
L'art de prendre la bonne photo au bon
L'art de prendre la bonne photo au bonL'art de prendre la bonne photo au bon
L'art de prendre la bonne photo au bon
 
Présentation1
Présentation1Présentation1
Présentation1
 
Accessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'AsieAccessibilité des sites web de tourisme français depuis l'Asie
Accessibilité des sites web de tourisme français depuis l'Asie
 
Introduction to dart par Yohan Beschi
Introduction to dart par Yohan BeschiIntroduction to dart par Yohan Beschi
Introduction to dart par Yohan Beschi
 
Pitch1 lumen
Pitch1 lumenPitch1 lumen
Pitch1 lumen
 
PARIS
PARISPARIS
PARIS
 

Similaire à YaJUG - Spring 3.0

Play Framework
Play FrameworkPlay Framework
Play Framework
Armaklan
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
Cellenza
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
jeUXdiCode
 

Similaire à YaJUG - Spring 3.0 (20)

Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)Vincent biret azure functions et flow #AosCanadianTour (quebec)
Vincent biret azure functions et flow #AosCanadianTour (quebec)
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
2
22
2
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development20151013 - Agirc arrco : Behavior driven development
20151013 - Agirc arrco : Behavior driven development
 

YaJUG - Spring 3.0

  • 1. Spring 3.0 • Gildas Cuisinier 9 Novembre 1
  • 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. Agenda • Rétrospective de Spring • Spring 3.0 – Supports, dépréciations et suppressions – Présentation des nouveautés – Roadmap
  • 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. 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. Spring 1.2 • Mai 2005 • DTD améliorée pour configuration plus souple – Alias, import • Premier support du JDK 5 ! – @Transactional, …
  • 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. Spring 2.5 • Novembre 2007 • Nouveaux namespaces : – JMS – Context • Annotations – Spring : IoC, Tests, Web – Standard JEE • Toujours compatible JDK 1.4
  • 11. Spring 3.0 • Supports, dépréciations et suppressions • Nouveautés de Spring 3 • Roadmap
  • 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
  • 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. 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. 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. 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. 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')
  • 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. 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. 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. 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. 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. REST DEMO
  • 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. Support du scheduling • Alternative : Annotation – Cron – Delai fixe – Période fixe <Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 27
  • 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. 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. 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. 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. 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
  • 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. 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
  • 37. Offert par Eyrolles <Date> lorrainejug@gmail.com | http://lorrainejug.blogspot.com 37