Environnements, Sources de propriétés et Profils avec Spring 3.1

1,358 views

Published on

Présentation d'une des nouveautés de Spring 3.1 : l'abstraction d'environnement, avec les profils et les sources de propriétés

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,358
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Environnements, Sources de propriétés et Profils avec Spring 3.1

  1. 1. Spring 3.1 Environnements, Sources de propriétés, ProfilsFabien Baligand
  2. 2. Notion d’environnement dans Spring  Les notions d’environnement, de sources de propriétés et de profils sont des nouveautés de Spring 3.1  L’environnement correspond au type de conteneur qui exécute votre application.  Spring 3.1 gère les environnements suivants:  Standard : une simple application java standalone  StandardServlet : une application web dans un conteneur web  StandardPortlet : une portlet dans un conteneur de portlets2
  3. 3. Sources de propriétés  On connaît tous dans Spring, le fameux property placeholder : <context:property-placeholder location="env.properties"/>  Cela permet notamment de définir des propriétés d’environnement positionnées dans un fichier properties, avec surcharge éventuelle dans les propriétés système.  Utilisation : <property name="driverClass" value="${db.driver}"/>  Spring 3.1 reprend ce principe et l’abstrait en créant la notion de source de propriétés (PropertySource).3
  4. 4. Sources de propriétés  Sources de propriétés proposées par Spring :  Properties : un fichier de propriétés  SystemEnvironment : les propriétés système de la VM  ServletContext : les paramètres du contexte web (context- param dans web.xml)  ServletConfig : les paramètres de la servlet ou du filtre (init-param dans web.xml)  Jndi : les entrées JNDI de votre application  CommandLine : les paramètres d’appel de l’application  PortletConfig : les paramètres de déclaration de la portlet  Et d’autres encore…4
  5. 5. Sources de propriétés  Un environnement contient une liste de sources de propriétés :  Standard :  Propriétés système de la JVM  Propriétés système de l’OS  StandardServlet :  Standard  ServletConfig  ServletContext  Jndi  StandardPortlet :  Standard  ServletContext  PortletContext  PortletConfig5  Jndi
  6. 6. Sources de propriétés  Il est possible de créer sa propre source de propriétés : public class MyPropertySource<MySource> extends PropertySource<T> { ... }  Il est possible d’ajouter des sources de propriétés à son environnement : MyPropertySource source = ... context.getEnvironment().getPropertySources() .addFirst(source);6
  7. 7. Environnement & sources de propriétés  Utilisation des propriétés dans Spring :  Propriété de type « SystemProperty » : <property name="prop" value="${java.io.tmpdir}"/>  Propriété de type « ServletContext » : <property name="prop" value="${mySCParameter}"/>  Propriété de type « JNDI » : <property name="prop" value="${my/jndi/value}"/>7
  8. 8. Profils  Concept :  Définir pour un même bean (de même identifiant), une configuration par profil.  Exemple :  Pour un bean ‘dataSource’, on aura  une configuration pour le profil ‘test’, pointant sur une base en mémoire  une configuration pour le profil ‘prod’, pointant sur une base externe8
  9. 9. Profils application-context.xml Service1 Service2 Profil « test » Profil « prod » dataSource dataSource9
  10. 10. Profils  application-context.xml : <bean class="sample.PersonDao"> <constructor-arg ref="dataSource" /> </bean> <beans profile="test"> <jdbc:embedded-database id="dataSource" type="H2" /> </beans> <beans profile="prod"> <jee:jndi-lookup id="dataSource« jndi-name="java:comp/env/jdbc/ds" /> </beans>10
  11. 11. Profils  Définir le(s) profil(s) actif(s) :  Par system property : -Dspring.profiles.active="prod"  Par web.xml : <context-param> <param-name>spring.profiles.active</param-name> <param-value>prod</param-value> </context-param>11
  12. 12. Profils  Définir le(s) profil(s) actif(s) :  Par code java : ctx.getEnvironment().setActiveProfiles("test");  Par annotation : @ActiveProfiles("test")12
  13. 13. DEMO13
  14. 14. Conclusion  Sources de propriétés :  Moyen unifié de déclarer des propriétés, quelqu’en soit la source  Plus puissant et flexible que le classique PropertyPlaceHolder  Peut être étendu à souhait  Profils :  Permet de définir des beans spring spécifiques par environnement  Très pratique pour définir des beans d’environnement spécifiques aux tests14

×