Environnements, Sources de propriétés et Profils avec Spring 3.1
1. Spring 3.1
Environnements,
Sources de propriétés,
Profils
Fabien Baligand
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
portlets
2
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. 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. 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
PortletConfig
5
Jndi
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. 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. 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 externe
8
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 tests
14