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) {
// ...
}
}
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)
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!
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"/>
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
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
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
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
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/
‣