Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,680
On Slideshare
1,680
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
31
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Spring 3 en production J U G S u m m e r C a m p 1 1 / 0 9 / 2 0 1 0
  • 2. Qui suis-je? Julien Dubois Spring par la pratique Ancien de SpringSource Responcia Twitter: @juliendubois
  • 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. 1 - Introduction rapide à Spring Si vous ne connaissez pas, c’est le moment de vous jeter à l’eau!
  • 5. Qu’est-ce que Spring? Framework IoC Open Source Meta-framework Projets Spring-*
  • 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. L’injection de dépendances «Ne nous appelez pas, nous vous rappellerons» - pattern d’Hollywood
  • 8. Exemple: injection par constructeur public class MonServiceImpl implements MonService { private AutreService autreService; public MonServiceImpl( AutreService autreService) { this.autreService = autreService; } }
  • 9. La programmation orientée aspect Les beans Spring sont «améliorés», «enrichis» lors de leur injection
  • 10. Exemple: transaction & sécurité avec l’aop public class MonServiceImpl implements MonService { @Transactional @Secured("ROLE_USER") public long methodeMetier(String value) { // ... } }
  • 11. 2 - Configurer Spring
  • 12. Configuration de Spring Configuration XML Configuration par annotations Spring JavaConfig @Autowired private MonBean monBean;
  • 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. 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. 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. 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. 3 - Spring à l'exécution
  • 18. Spring est partout
  • 19. Démarrez du bon pied Valider l’application au démarrage @Required et @Autowired - assurance d’une injection réussie
  • 20. Le lazy-loading Lazy-loading sur les beans «lents à démarrer» FBI: Fausse Bonne Idée
  • 21. L’AOP Différentes manières de muscler ses objets Proxy JDK vs CGLIB AspectJ
  • 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. Scopes des Beans Singleton, Session, Flow, Request, Prototype <aop:scoped-proxy> Attention au clustering
  • 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. OSGi Oh est-ce j’y aïe?
  • 26. 4 - Spring & Hibernate
  • 27. Spring & Hibernate Un secret peu ébruité par SpringSource et JBoss Une corrélation de 1 dans l’utilisation des deux projets
  • 28. Le chargement «paresseux» Lazy-loading ou outer join? Utilisez un cache de 2nd niveau Optimisez vos named queries
  • 29. Hibernate Validator Valide vos objets du domaine Mort au domaine anémique Supporté par Spring 3
  • 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. 5 - Spring & le Cloud
  • 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. 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. 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. 6 - Monitorer Spring
  • 36. JMX Standard Simple à mettre en place Fonctionnalités basiques
  • 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. 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. Hyperic Historique des données, agrégation de plusieurs serveurs Nombreuses technologies reconnues, dont Spring Open Source, financé par VMWare
  • 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. Réveillez-vous, c’est fini!
  • 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. 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/ ‣