Spring 3 en
    production
S p r i n g U s e r G r o u p   F R
          2 1 / 0 9 / 2 0 1 0
Qui suis-je?
Julien Dubois

Spring par la pratique

Ancien de
SpringSource

Responcia

Twitter: @juliendubois
Sommaire
(1)Introduction rapide à Spring

(2)Configurer Spring

(3)Spring à l'exécution

(4)Spring & Hibernate

(5)Spring &...
1 - Introduction
        rapide à Spring

   Si vous ne
connaissez pas,
c’est le moment
 de vous jeter à
      l’eau!
Qu’est-ce que
            Spring?

Framework IoC

Open Source	


Meta-framework

Projets Spring-*
Les bases de Spring
Un Bean Spring = Un
objet Java «simple»

Généralement un
singleton, mais pas
forcément

Configuré et in...
L’injection de
           dépendances

«Ne nous
appelez pas,
nous vous
rappellerons» -
pattern
d’Hollywood
Exemple: injection
        par constructeur
public class MonServiceImpl
     implements MonService {

    private AutreSer...
La programmation
       orientée aspect

Les beans
Spring sont
«améliorés»,
«enrichis»
lors de leur
injection
Exemple: transaction
    & sécurité avec l’aop
public class MonServiceImpl
     implements MonService {

    @Transactiona...
2 - Configurer
     Spring
Configuration de
           Spring
 Configuration XML

 Configuration par
 annotations

 Spring JavaConfig


@Autowired
priva...
Fichiers XML
Divisez pour mieux
régner

Utilisez les namespaces

Stockez les fichiers
dans
META-INF/spring

La configuration...
Gestion des
              propriétés
 Gagnez en souplesse:
 externalisez vos propriétés

 Proposez des valeurs par
 défaut...
Utilisez votre
  serveur d’applications
Un serveur
d’applications fournit de
nombreux services
(DataSources, JMS...)

Plus...
Les application
  contexts hiérarchiques
On peut avoir une
hiérarchie de contexts      Contexte parent
Spring             ...
3 - Spring à
l'exécution
Spring est partout
Démarrez du bon
            pied
Valider
l’application au
démarrage

@Required et
@Autowired -
assurance d’une
injection r...
Le lazy-loading

Lazy-loading sur les
beans «lents à
démarrer»

FBI: Fausse Bonne
Idée
L’AOP

Différentes
manières de
muscler ses objets

Proxy JDK vs
CGLIB

AspectJ
Après le démarrage

Les beans Spring sont
disponibles

Et vont être attaqués
par de nombreuses
threads en parallèle
      ...
Scopes des Beans

Singleton, Session,
Flow, Request,
Prototype

<aop:scoped-proxy>

Attention au clustering
Lancement de
  traitements asynchrones
@Async

TaskExecutor

Permet de tenir la charge
comme Twitter

Astuce: avoir un poo...
OSGi
Oh est-ce j’y aïe?
4 - Spring &
 Hibernate
Spring & Hibernate
Un secret peu ébruité par SpringSource et
JBoss




Une corrélation de 1 dans l’utilisation des
deux pr...
Le chargement
           «paresseux»
Lazy-loading ou outer
join?

Utilisez un cache de
2nd niveau

Optimisez vos named
que...
Hibernate Validator

Valide vos objets
du domaine

Mort au domaine
anémique!

Supporté par
Spring 3
Hibernate Search
La méthode intelligente pour
embarquer un moteur de
recherche

Peut grandement alléger la
charge de votre...
5 - Spring &
 le Cloud
Plusieurs types de
           cloud
IaaS (Infrastructure As A
Service): Amazon

  Simple location de
  matériel à la deman...
Spring dans le
       nuage: la théorie
Configuration identique: IoC et AOP doivent fonctionner
de la même manière

Permet ...
Spring dans le
      nuage: la pratique
Lancer des Singletons dans une JVM
pose rarement un problème

Spring ne gère pas l...
6 - Monitorer
    Spring
JMX

Standard

Simple à mettre en
place

Fonctionnalités
basiques
Exemple: Spring
            JMX

<bean id="exporter"
      class="org.springframework.jmx.export.MBeanExporter">
  <proper...
Interro surprise


Cette configuration peut également être réalisée par
annotation, pourquoi privilégier le XML?

C’est une...
Hyperic

Historique des données,
agrégation de plusieurs
serveurs

Nombreuses technologies
reconnues, dont Spring

Open So...
Monitoring de la
              JVM
Pur monitoring, pas
de management

Niveau de détail très
fin

Monte en gamme et
attaque ...
Réveillez-vous,
  c’est fini!
Des questions?
Vous pouvez les poser sur http://responcia.net

Par e-mail: julien@responcia.fr

Ou tout de suite, s’il res...
Crédits photos
                La plupart des photos utilisées pour cette
                présentation sont sous licence C...
Prochain SlideShare
Chargement dans…5
×

Spring 3 en production

4 731 vues

Publié le

Spring 3 en production: le support utilisé lors des conférences au JUG Summer Camp et au Spring User Group FR

Publié dans : Technologie
0 commentaire
8 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 731
Sur SlideShare
0
Issues des intégrations
0
Intégrations
21
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
8
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Spring 3 en production

  1. 1. Spring 3 en production S p r i n g U s e r G r o u p F R 2 1 / 0 9 / 2 0 1 0
  2. 2. Qui suis-je? Julien Dubois Spring par la pratique Ancien de SpringSource Responcia Twitter: @juliendubois
  3. 3. Sommaire (1)Introduction rapide à Spring (2)Configurer Spring (3)Spring à l'exécution (4)Spring & Hibernate (5)Spring & le Cloud (6)Monitorer Spring
  4. 4. 1 - Introduction rapide à Spring Si vous ne connaissez pas, c’est le moment de vous jeter à l’eau!
  5. 5. Qu’est-ce que Spring? Framework IoC Open Source Meta-framework Projets Spring-*
  6. 6. Les bases de Spring Un Bean Spring = Un objet Java «simple» Généralement un singleton, mais pas forcément Configuré et instancié au démarrage de l’application
  7. 7. L’injection de dépendances «Ne nous appelez pas, nous vous rappellerons» - pattern d’Hollywood
  8. 8. Exemple: injection par constructeur public class MonServiceImpl implements MonService { private AutreService autreService; public MonServiceImpl( AutreService autreService) { this.autreService = autreService; } }
  9. 9. La programmation orientée aspect Les beans Spring sont «améliorés», «enrichis» lors de leur injection
  10. 10. Exemple: transaction & sécurité avec l’aop public class MonServiceImpl implements MonService { @Transactional @Secured("ROLE_USER") public long methodeMetier(String value) { // ... } }
  11. 11. 2 - Configurer Spring
  12. 12. Configuration de Spring Configuration XML Configuration par annotations Spring JavaConfig @Autowired private MonBean monBean;
  13. 13. Fichiers XML Divisez pour mieux régner Utilisez les namespaces Stockez les fichiers dans META-INF/spring La configuration d’infrastructure varie suivant les environnements
  14. 14. Gestion des propriétés Gagnez en souplesse: externalisez vos propriétés Proposez des valeurs par défaut, faciles à surcharger <context:property-placeholder location="classpath*:META-INF/spring/*.properties, classpath*:*.properties"/>
  15. 15. Utilisez votre serveur d’applications Un serveur d’applications fournit de nombreux services (DataSources, JMS...) Plus performant, plus simple à exploiter que l’équivalent Spring <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myDS"/>
  16. 16. Les application contexts hiérarchiques On peut avoir une hiérarchie de contexts Contexte parent Spring (métier) Souvent utilisé sans le savoir (Spring MVC) Permet une séparation logique de l’architecture Contexte enfant (présentation)
  17. 17. 3 - Spring à l'exécution
  18. 18. Spring est partout
  19. 19. Démarrez du bon pied Valider l’application au démarrage @Required et @Autowired - assurance d’une injection réussie
  20. 20. Le lazy-loading Lazy-loading sur les beans «lents à démarrer» FBI: Fausse Bonne Idée
  21. 21. L’AOP Différentes manières de muscler ses objets Proxy JDK vs CGLIB AspectJ
  22. 22. Après le démarrage Les beans Spring sont disponibles Et vont être attaqués par de nombreuses threads en parallèle Bean Spring Attention à être thread safe!
  23. 23. Scopes des Beans Singleton, Session, Flow, Request, Prototype <aop:scoped-proxy> Attention au clustering
  24. 24. Lancement de traitements asynchrones @Async TaskExecutor Permet de tenir la charge comme Twitter Astuce: avoir un pool d’une seule thread <task:executor id="executor" pool-size="1"/>
  25. 25. OSGi Oh est-ce j’y aïe?
  26. 26. 4 - Spring & Hibernate
  27. 27. Spring & Hibernate Un secret peu ébruité par SpringSource et JBoss Une corrélation de 1 dans l’utilisation des deux projets
  28. 28. Le chargement «paresseux» Lazy-loading ou outer join? Utilisez un cache de 2nd niveau Optimisez vos named queries
  29. 29. Hibernate Validator Valide vos objets du domaine Mort au domaine anémique! Supporté par Spring 3
  30. 30. Hibernate Search La méthode intelligente pour embarquer un moteur de recherche Peut grandement alléger la charge de votre base de données Parfaitement intégré à Hibernate, transparent pour Spring
  31. 31. 5 - Spring & le Cloud
  32. 32. Plusieurs types de cloud IaaS (Infrastructure As A Service): Amazon Simple location de matériel à la demande PaaS (Platform As A Service): Google Cache distribué, base de données spécialisée
  33. 33. Spring dans le nuage: la théorie Configuration identique: IoC et AOP doivent fonctionner de la même manière Permet une plus grande portabilité, en particulier pour le PaaS Historiquement, une force de Spring: portabilité entre les serveurs d’applications
  34. 34. Spring dans le nuage: la pratique Lancer des Singletons dans une JVM pose rarement un problème Spring ne gère pas les vrais problèmes: Cache distribué Base de données Sessions utilisateurs
  35. 35. 6 - Monitorer Spring
  36. 36. JMX Standard Simple à mettre en place Fonctionnalités basiques
  37. 37. Exemple: Spring JMX <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter"> <property name="beans"> <map> <entry key="bean:name=test" value-ref="testBean"/> </map> </property> </bean>
  38. 38. Interro surprise Cette configuration peut également être réalisée par annotation, pourquoi privilégier le XML? C’est une configuration d'infrastructure Elle varie en fonction de l’environnement Il suffit de copier/coller le fichier pour avoir du monitoring
  39. 39. Hyperic Historique des données, agrégation de plusieurs serveurs Nombreuses technologies reconnues, dont Spring Open Source, financé par VMWare
  40. 40. Monitoring de la JVM Pur monitoring, pas de management Niveau de détail très fin Monte en gamme et attaque le monitoring «métier» Une offre commerciale intéressante: New Relic
  41. 41. Réveillez-vous, c’est fini!
  42. 42. Des questions? Vous pouvez les poser sur http://responcia.net Par e-mail: julien@responcia.fr Ou tout de suite, s’il reste du temps :-) Un feedback? Envoyez-le sur Twitter: @juliendubois
  43. 43. Crédits photos La plupart des photos utilisées pour cette présentation sont sous licence Creative Commons ‣http://www.flickr.com/photos/sebpaquet/5221678/ ‣http://www.flickr.com/photos/yakobusan/2436481628/ ‣http://www.flickr.com/photos/kooks2006/30477042/ ‣http://www.flickr.com/photos/leomei/2651904068/ ‣http://www.flickr.com/photos/pedrosimoes7/118946291/ ‣http://www.flickr.com/photos/henryleong/2684287324/ ‣http://www.flickr.com/photos/liberato/149365463/ ‣http://www.flickr.com/photos/srgblog/2831815666/ ‣http://www.flickr.com/photos/livenature/177452444/ ‣http://www.flickr.com/photos/bramus/2998573943/ ‣http://www.flickr.com/photos/liberato/185711145/ ‣http://www.flickr.com/photos/mogwai_83/3022261893/ ‣http://www.flickr.com/photos/gadl/312754502/ ‣http://www.flickr.com/photos/nnova/3060019732/ ‣http://www.flickr.com/photos/mikebaird/343297515/ ‣http://www.flickr.com/photos/mikebaird/3072645479/ ‣http://www.flickr.com/photos/mikebaird/343298668/ ‣http://www.flickr.com/photos/lrargerich/3366007510/ ‣http://www.flickr.com/photos/mikebaird/343306006/ ‣http://www.flickr.com/photos/nostri-imago/3413984703/ ‣http://www.flickr.com/photos/mikebaird/393734903/ ‣http://www.flickr.com/photos/kaibara/4068996309/ ‣http://www.flickr.com/photos/revdancatt/449142212/ ‣http://www.flickr.com/photos/8085704@N05/4343639127/ ‣http://www.flickr.com/photos/noelzialee/481283924/ ‣http://www.flickr.com/photos/jurvetson/4685661036/ ‣http://www.flickr.com/photos/mikebaird/1659436047/ ‣http://www.flickr.com/photos/iancarroll/4743903048/ ‣http://www.flickr.com/photos/cipherswarm/2369136756/ ‣http://www.flickr.com/photos/soldiersmediacenter/850896205/ ‣

×