SlideShare una empresa de Scribd logo
1 de 14
Spring 3.1
                    Environnements,
                  Sources de propriétés,
                         Profils

Fabien Baligand
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
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
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
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
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
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
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
Profils

                  application-context.xml


                 Service1          Service2

              Profil « test »   Profil « prod »
               dataSource        dataSource




9
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
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
Profils

      Définir le(s) profil(s) actif(s) :


            Par code java :
     ctx.getEnvironment().setActiveProfiles("test");


            Par annotation :
     @ActiveProfiles("test")




12
DEMO

13
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

Más contenido relacionado

La actualidad más candente

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfacesbenouini rachid
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8Antoine Rey
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux ServletsFrançois Charoy
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web5pidou
 
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!bleporini
 
Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4halleck45
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Laurent Guérin
 

La actualidad más candente (17)

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Hibernate
HibernateHibernate
Hibernate
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
 
Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
 
Jdbc
JdbcJdbc
Jdbc
 
Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4Programmation Orientée Objet et les Traits en PHP 5.4
Programmation Orientée Objet et les Traits en PHP 5.4
 
Hibernate
HibernateHibernate
Hibernate
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
4 Hibernate
4 Hibernate4 Hibernate
4 Hibernate
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1
 

Destacado

Présentation de jQuery UI
Présentation de jQuery UIPrésentation de jQuery UI
Présentation de jQuery UIFabien Baligand
 
Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jFabien Baligand
 
Google+ To RSS As A Service
Google+ To RSS As A ServiceGoogle+ To RSS As A Service
Google+ To RSS As A ServiceFabien Baligand
 
Présentation de gplus to-twitter
Présentation de gplus to-twitterPrésentation de gplus to-twitter
Présentation de gplus to-twitterFabien Baligand
 
RestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryRestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryFabien Baligand
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Fabien Baligand
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaFabien Baligand
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
 

Destacado (9)

Présentation de jQuery UI
Présentation de jQuery UIPrésentation de jQuery UI
Présentation de jQuery UI
 
Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4j
 
Atmosphere Framework
Atmosphere FrameworkAtmosphere Framework
Atmosphere Framework
 
Google+ To RSS As A Service
Google+ To RSS As A ServiceGoogle+ To RSS As A Service
Google+ To RSS As A Service
 
Présentation de gplus to-twitter
Présentation de gplus to-twitterPrésentation de gplus to-twitter
Présentation de gplus to-twitter
 
RestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryRestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jquery
 
Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)Plugin logstash-filter-aggregate (meetup Elastic FR)
Plugin logstash-filter-aggregate (meetup Elastic FR)
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source java
 
Study: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving CarsStudy: The Future of VR, AR and Self-Driving Cars
Study: The Future of VR, AR and Self-Driving Cars
 

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

cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfSliimAmiri
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart ClientGuillaume Sauthier
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Xavier NOPRE
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementMohamed hedi Abidi
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateYouness Boukouchi
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfLarbaSAWADOGO2
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103MRamo2s
 
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Nicolas Georgeault
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructurecontinuousphp
 

Similar a Environnements, Sources de propriétés et Profils avec Spring 3.1 (20)

Gradle
GradleGradle
Gradle
 
Présentation nouveauté java7
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
 
Maven
MavenMaven
Maven
 
cours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdfcours8-GL-minfo-1718.pdf
cours8-GL-minfo-1718.pdf
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 
Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013Play framework - Human Talks Grenoble - 12.02.2013
Play framework - Human Talks Grenoble - 12.02.2013
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et Développement
 
Développement Sous Android
Développement Sous AndroidDéveloppement Sous Android
Développement Sous Android
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
La persistance des données : ORM et hibernate
La persistance des données : ORM et hibernateLa persistance des données : ORM et hibernate
La persistance des données : ORM et hibernate
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
POO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdfPOO Licence L2 Partie I.pdf
POO Licence L2 Partie I.pdf
 
Presentation hibernate nfe103
Presentation hibernate nfe103Presentation hibernate nfe103
Presentation hibernate nfe103
 
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructure
 
Codons notre infrastructure
Codons notre infrastructureCodons notre infrastructure
Codons notre infrastructure
 
Présentation1
Présentation1Présentation1
Présentation1
 

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
  • 9. Profils application-context.xml Service1 Service2 Profil « test » Profil « prod » dataSource dataSource 9
  • 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. 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. Profils  Définir le(s) profil(s) actif(s) :  Par code java : ctx.getEnvironment().setActiveProfiles("test");  Par annotation : @ActiveProfiles("test") 12
  • 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