YaJUG - Spring 3.0
-
Upload
gildas-cuisinier -
Category
Technology
-
view
436 -
download
2
description
Transcript of YaJUG - Spring 3.0
SpringSpring 3.03.0
9 Novembre
1
• Gildas Cuisinier
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
AgendaAgenda
• Rétrospective de Spring• Spring 3.0
– Supports, dépréciations et suppressions– Présentation des nouveautés– Roadmap
Rétrospective de Rétrospective de SpringSpringSpringSpring
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
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
Spring 1.2Spring 1.2
• Mai 2005• DTD améliorée pour configuration plus souple
– Alias, import
• Premier support du JDK 5 !– @Transactional, …
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
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
SpringSpring 33SpringSpring 33
Spring 3.0Spring 3.0
• Supports, dépréciations et suppressions• Nouveautés de Spring 3 • Roadmap
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
NouveautésNouveautésNouveautésNouveautés
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
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(); } }
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
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
• …
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')
Expression Expression LanguageLanguage
DEMO
LanguageLanguage
RESTREST
• Intégré dans Spring @MVC• Fournir un support natif
– Application visuelle Web– Service
• Alternative : Utiliser JAX-RS et son modèle propre
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
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
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
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);
RESTREST
DEMO
RESTREST
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
Support du Support du schedulingscheduling
• Alternative : Annotation– Cron
– Delai fixe
– Période fixe
<Date> [email protected] | http://lorrainejug.blogspot.com 27
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
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
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
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
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
RoadmapRoadmapRoadmapRoadmap
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
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
Questions Questions Questions Questions
[email protected] | http://lorrainejug.blogspot.com 36
Offert par Offert par EyrollesEyrolles
<Date> [email protected] | http://lorrainejug.blogspot.com 37