MarsJUG - Spring 3.0

Post on 28-May-2015

484 views 1 download

description

Spring 3.0 presentation at MarsJUG

Transcript of MarsJUG - Spring 3.0

Spring 3.0Gildas Cuisinier

vendredi 19 février 2010

Gildas Cuisinier

Consultant Java depuis 3 ansGam Consult Luxembourg

Certifié Spring

Responsable Spring @ Developpez.com

Article, FAQ, Forum, Compte rendu

Relecteur technique

2vendredi 19 février 2010

Agenda

RetrospectiveSpring 3.0Spring et JEE 6

3vendredi 19 février 2010

Retrospective

vendredi 19 février 2010

Avant Spring

EJB 2Modèle complexe

Difficile à tester

5vendredi 19 février 2010

Spring 1.0

Mars 2004Fonctionnalités

Inversion du contrôle

Programmation Orienté Aspect (AOP)

Support de Jdbc, Hibernate, JDO

Framework Web

6vendredi 19 février 2010

Instanciation

7

Dépendance directeDifficile à tester

vendredi 19 février 2010

Registre

8

vendredi 19 février 2010

IoC : Injection de dépendances

9

Instancie

Instancie

InstancieInstancie

Injecte InstanceB

vendredi 19 février 2010

IoC : Avantages

10

POJODépendance uniquement sur les contratsPlus simple à tester

vendredi 19 février 2010

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

vendredi 19 février 2010

Spring 1.2

Mai 2005Toujours basé sur une DTD

Alias, import

Premier support du JDK 5 !@Transactional, …

vendredi 19 février 2010

Spring 2.0

Octobre 2006Simplification de la configuration XML

Basé sur XML Schema

Namespaces dédiés

JEE, Transaction, AOP, Lang, Util

Scope

Annotations AspectJ13

vendredi 19 février 2010

Spring 2.5

Novembre 2007Nouveaux namespaces :

JMS

Context

Annotations Spring : IoC, Tests, Web

Standard JEE

Toujours compatible JDK 1.4 14

vendredi 19 février 2010

Spring 3.0

vendredi 19 février 2010

Spring 3.0

Supports, dépréciations et suppressionsNouveautés de Spring 3

Rest, Expression Languages, namespaces

Spring 3.1

16vendredi 19 février 2010

Java 5 - ApplicationContext

17

SpeakerRepository repository = context.getBean(SpeakerRepository.class);

<T> T getBean(Class<T> requiredType) throws BeansException;

Pas de casting

vendredi 19 février 2010

Java 5 - RowMapper

18

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(); } }

vendredi 19 février 2010

Java 5 - Varargs

19

public Integer save(Speaker speaker) { return template.update("insert into speakers values(null, ?,?,?,?)", speaker.getFirstName(), speaker.getLastName(), speaker.getEmail(), speaker.getBirthday()); }

Avantpublic Integer saveOld(Speaker speaker) { return template.update("insert into speakers values(null, ?,?,?,?)", new Object[]{speaker.getFirstName(), speaker.getLastName(), speaker.getEmail(), speaker.getBirthday()}); }

Spring 3

vendredi 19 février 2010

Supports

JDK 1.5+Rupture : JDK 1.4 n’est plus supporté

DépréciationHiérarchie de contrôleur Web

Hiérarchie de classe pour Junit 3.8

Le support de Struts 1.0

SuppressionLe support de Commons Attributes

Le support de Toplink 20vendredi 19 février 2010

DEMO DROP IN

vendredi 19 février 2010

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

UtilisationGestion des payload REST en XML 22

vendredi 19 février 2010

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 { 23

vendredi 19 février 2010

Version Annotation

24

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

vendredi 19 février 2010

Expression Language

Syntaxe proche des Unified EL mais avec des fonctionnalités supplémentairesDéveloppé selon les besoins des projets du portfolioIndépendant

25vendredi 19 février 2010

EL : Synthaxe

26

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

vendredi 19 février 2010

EL : Synthaxe

27

Syntaxe Type

2 == 2 Opérateur

2 == 2 and 3 == 4 (faux)2 == 1 or 4 ==4 (vrai) Opérateur logique

5.00' matches '^-?\\d+(\\.\\d{2})?$' Regex

prenom ?:‘inconu’ Opérateur elvis

objet?.propriete?.proprieteFils Safe navigation

vendredi 19 février 2010

Expression Language

Attributs du contextesystemProperties, systemEnvironnent

Beans

Web :

contextParameters, contextAttributes

request, session

28vendredi 19 février 2010

EL : A venir

Utilisation dans les projets du portfolioExemple : Spring Security

29

<http use-expressions="true"> <intercept-url pattern="/secure/**" access="hasRole('ROLE_SUPERVISOR') and hasIpAddress('192.168.1.0/24')" /> ...</http>

vendredi 19 février 2010

Spring MVC

Namespace de configurationSupport 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

REST

Intégré dans Spring @MVCFournir un support natif

Application visuelle Web

Service

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

31vendredi 19 février 2010

Exemple

32

vendredi 19 février 2010

REST – Limitation HTML

REST : Utilisation les méthodes HTTP :

GET,POST,PUT,DELETE

HTML ne gère que GET / POSTSolution : HiddenHttpMethodFilter

Taglib Spring MVC utilise cette solution

33vendredi 19 février 2010

REST – Content Negociation

URL = ResourcePlusieurs représentations possibles

Solution : ContentNegotiatingViewResolver

Délègue aux autres ViewResolver

Sélectionne celui qui correspond à la demande

34vendredi 19 février 2010

REST - Client

RestTemplateAPI 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

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

Support du scheduling

Alternative : AnnotationCron

Delai fixe

Période fixe

37vendredi 19 février 2010

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

Support appel asynchrone

Cas 1 : Méthode sans résultat

Cas 2 : Méthode avec résultat

39vendredi 19 février 2010

Support des DB embarquées

Namespace jdbcPermet de configurer des bases embarquées

Derby

H2

HSQLDB

Permet de configurer des scripts d’initialisation

40vendredi 19 février 2010

Support Bean Validation

JSR 303 – Bean ValidationStandardisation de Hibernate Validator

Permet de configurer les contraintes de validation directement sur les objets métiers

41vendredi 19 février 2010

Support Bean Validation

Spring possède son propre système de validation

org.springframework.validation.Validator

Propose un adapteurLocalValidatorFactoryBean

Toutes couches Validation manuelle via injection du validateur 42

vendredi 19 février 2010

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

DEMOREST

vendredi 19 février 2010

Spring 3.X Roadmap

Spring 3.1 : Début 2010Support complet de JEE 6

Support des conversations

45vendredi 19 février 2010

Conclusion

Spring 3.0Release 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

Spring 3 et JEE 6

vendredi 19 février 2010

Questions

vendredi 19 février 2010

Offert par Eyrolles

49vendredi 19 février 2010