YaJUG - Spring 3.0

37
Spring Spring 3.0 3.0 9 Novembre 1 Gildas Cuisinier

description

Spring 3.0 presentation at YaJUG

Transcript of YaJUG - Spring 3.0

Page 1: YaJUG - Spring 3.0

SpringSpring 3.03.0

9 Novembre

1

• Gildas Cuisinier

Page 2: YaJUG - Spring 3.0

Gildas CuisinierGildas 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

<Date> 2

– Reporter pour différents évènements

• Relecteur de Spring par la pratique, 2ème édition

Page 3: YaJUG - Spring 3.0

AgendaAgenda

• Rétrospective de Spring• Spring 3.0

– Supports, dépréciations et suppressions– Présentation des nouveautés– Roadmap

Page 4: YaJUG - Spring 3.0

Rétrospective de Rétrospective de SpringSpringSpringSpring

Page 5: YaJUG - Spring 3.0

Spring 1.0Spring 1.0

• Mars 2004• Alternative légère au EJB 2• Fonctionnalités :

– Injection– AOP– Support de Jdbc, Hibernate, iBatis, JDO, ..– Framework Web– Framework Web

Page 6: YaJUG - Spring 3.0

Spring 1.0Spring 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• MVC

Page 7: YaJUG - Spring 3.0

Spring 1.2Spring 1.2

• Mai 2005• DTD améliorée pour configuration plus souple

– Alias, import

• Premier support du JDK 5 !– @Transactional, …

Page 8: YaJUG - Spring 3.0

Spring 2.0Spring 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• Annotations AspectJ

Page 9: YaJUG - Spring 3.0

Spring 2.5Spring 2.5

• Novembre 2007• Nouveaux namespaces :

– JMS– Context

• Annotations – Spring : IoC, Tests, Web – Standard JEE– Standard JEE

• Toujours compatible JDK 1.4

Page 10: YaJUG - Spring 3.0

SpringSpring 33SpringSpring 33

Page 11: YaJUG - Spring 3.0

Spring 3.0Spring 3.0

• Supports, dépréciations et suppressions• Nouveautés de Spring 3 • Roadmap

Page 12: YaJUG - Spring 3.0

SupportsSupports

• 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 Commons Attributes– Le support de Toplink– Le support (héritage) de Struts 1.0

Page 13: YaJUG - Spring 3.0

NouveautésNouveautésNouveautésNouveautés

Page 14: YaJUG - Spring 3.0

Spring OXMSpring 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– Gestion des payload REST en XML– Accès aux données SQL XML

Page 15: YaJUG - Spring 3.0

JavaConfigJavaConfig

• Configuration par annotations– @Configuration, @Bean, @Lazy, @Primary, @Import, @Value

• Version XML :– <beans>

<bean name=“monBean" class=“be.hikage.MonBeanImpl"/></beans>

• Version Annotation:• Version Annotation:– @Configuration

public class AppConfig { @Bean public MonBean monBean() { return new MonBeanImpl(); } }

Page 16: YaJUG - Spring 3.0

Expression LanguageExpression Language

• Syntaxe proche des Unified EL mais avec des fonctionnalités supplémentaires

• Développé selon les besoins des projets du portfolio

• Indépendant

Page 17: YaJUG - Spring 3.0

Expression LanguageExpression 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• Supporte les opérateurs– #{1==1} -> Vrai

• …

Page 18: YaJUG - Spring 3.0

Expression LanguageExpression Language

• Attributs du contexte– systemProperties, systemEnvironnent– Beans– Web :

• contextParameters, contextAttributes• request, session

– Securite :– Securite :• hasRole(), isFullyAuthenticated(), …• Ex : hasRole('ROLE_SUPERVISOR') and hasIpAddress('192.168.1.0/24')

Page 19: YaJUG - Spring 3.0

Expression Expression LanguageLanguage

DEMO

LanguageLanguage

Page 20: YaJUG - Spring 3.0

RESTREST

• Intégré dans Spring @MVC• Fournir un support natif

– Application visuelle Web– Service

• Alternative : Utiliser JAX-RS et son modèle propre

Page 21: YaJUG - Spring 3.0

REST REST -- MVCMVC

@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

Page 22: YaJUG - Spring 3.0

REST REST –– HTTP MethodsHTTP 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– Solution : HiddenHttpMethodFilter– Taglib Spring MVC utilise cette solution

Page 23: YaJUG - Spring 3.0

REST REST –– Content NegociationContent Negociation

• URL = Resource• Plusieurs représentations• Solution : ContentNegotiatingViewResolver

– Délègue aux autres ViewResolver– Sélectionne celui qui correspond à la demande

• @RequestBody• @RequestBody– HttpMessageConverter

Page 24: YaJUG - Spring 3.0

REST REST -- ClientClient

• 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– 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);

Page 25: YaJUG - Spring 3.0

RESTREST

DEMO

RESTREST

Page 26: YaJUG - Spring 3.0

Support du Support du schedulingscheduling

• 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> [email protected] | http://lorrainejug.blogspot.com 26

Page 27: YaJUG - Spring 3.0

Support du Support du schedulingscheduling

• Alternative : Annotation– Cron

– Delai fixe

– Période fixe

<Date> [email protected] | http://lorrainejug.blogspot.com 27

Page 28: YaJUG - Spring 3.0

Support appel asynchroneSupport 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> [email protected] | http://lorrainejug.blogspot.com 28

Page 29: YaJUG - Spring 3.0

Support des DB embarquéesSupport des DB embarquées

• Namespace jdbc– Permet de configurer des bases embarquées

• Derby• H2• HSQLDB

– Permet de configurer des scripts d’initialisation

<Date> [email protected] | http://lorrainejug.blogspot.com 29

Page 30: YaJUG - Spring 3.0

Support Bean ValidationSupport 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> [email protected] | http://lorrainejug.blogspot.com 30

Page 31: YaJUG - Spring 3.0

Support Bean ValidationSupport Bean Validation

• Spring possède son propre système de validation– org.springframework.validation.Validator

• Propose un adapteur– LocalValidatorFactoryBean

• Toutes couches • Toutes couches – Validation manuelle via injection du validateur

• Spring MVC– Autovalidation des objets « commande »

<Date> [email protected] | http://lorrainejug.blogspot.com 31

Page 32: YaJUG - Spring 3.0

Support JSR 330 Support JSR 330 -- @@InjectInject

• 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– @Singleton– @Scope

• Utilisation identique aux annotations standards– Utilisation mixte permise

<Date> [email protected] | http://lorrainejug.blogspot.com 32

Page 33: YaJUG - Spring 3.0

RoadmapRoadmapRoadmapRoadmap

Page 34: YaJUG - Spring 3.0

Spring 3.X RoadmapSpring 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

Page 35: YaJUG - Spring 3.0

ConclusionConclusion

• 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> [email protected] | http://lorrainejug.blogspot.com 35

Page 36: YaJUG - Spring 3.0

Questions Questions Questions Questions

[email protected] | http://lorrainejug.blogspot.com 36

Page 37: YaJUG - Spring 3.0

Offert par Offert par EyrollesEyrolles

<Date> [email protected] | http://lorrainejug.blogspot.com 37