SlideShare uma empresa Scribd logo
1 de 15
2013-06-12 Profiles Spring 1
Mathieu PARISOT
@matparisot
Kézako ?
"Changer le comportement de votre
application en fonction d'un (ou plusieurs)
profile(s) actif(s)"
2013-06-12 Profiles Spring 2
L'exemple type
C'est l'histoire d'une BDD et d'un développeur
qui veut faire des tests…
2013-06-12 Profiles Spring 3
Mon cas d'utilisation
2013-06-12 Profiles Spring 4
Mon ServeurServeur sécu
Request
Response
Headers
Authentification Mock authent
La solution retenue 1/2
@Controller
public class MyControllerNoAuthent {
…
@RequestMapping(value="/url1")
public String method(HttpRequest request) {
return "ma page 1";
}
…
}
2013-06-12 Profiles Spring 5
La solution retenue 2/2
@Controller
public class MyControllerMockAuthent {
private @Inject MyControllerNoAuthent controller;
…
@RequestMapping(value="/url1")
public String method(HttpRequest request) {
simulateAuthentServer(request);
return controller.method(request);
}
…
}
2013-06-12 Profiles Spring 6
Sauf que…
On ne peut pas avoir plusieurs
controllers sur la même URL…
2013-06-12 Profiles Spring 7
Les profiles Spring 1/2
@Controller
@Profile("default")
public class MyControllerNoAuthent {
…
@RequestMapping(value="/url1")
public String method(HttpRequest request) {
return "ma page 1";
}
…
}
2013-06-12 Profiles Spring 8
La solution retenue 2/2
@Controller
@Profile("dev")
public class MyControllerMockAuthent {
private @Inject MyControllerNoAuthent controller;
…
@RequestMapping(value="/url1")
public String method(HttpRequest request) {
simulateAuthentServer(request);
return controller.method(request);
}
…
}
2013-06-12 Profiles Spring 9
Activer notre profile 1/3
Dans le web.xml :
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
2013-06-12 Profiles Spring 10
Activer notre profile 2/3
En ligne de commande :
-Dspring.profile.active=dev
2013-06-12 Profiles Spring 11
Activer notre profile 3/3
Via un fichier properties :
public class MyCtxInitializer implements
ApplicationContextInitializer<ConfigurableApplicationContext>
{
public void initialize(ConfigurableApplicationContext appCtx) {
appCtx.getEnvironment().getPropertySources().addLast(
new ResourcePropertySource("classpath:/my.properties"));
appCtx.getEnvironment().setActiveProfiles(
appCtx.getProperties("myProfile"));
}
}
2013-06-12 Profiles Spring 12
Activer notre profile 3/3 bis
Ne pas oublier dans le web.xml :
<context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>com.me.MyCtxInitializer</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
2013-06-12 Profiles Spring 13
La conclusion
⦿C'est simple
⦿Pratique
⦿Très peu verbeux en annotation
⦿Mais ça rajoute de la magie…
2013-06-12 Profiles Spring 14
Des questions ?
2013-06-12 Profiles Spring 15

Mais conteúdo relacionado

Semelhante a Mathieu parisot spring profiles

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
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJSVISEO
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaZenika
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! Marie-Alice Blete
 

Semelhante a Mathieu parisot spring profiles (7)

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
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Springioc
SpringiocSpringioc
Springioc
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 
Aperçu de RequireJS
Aperçu de RequireJSAperçu de RequireJS
Aperçu de RequireJS
 
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
 
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons ! D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
D’un modèle d'IA dans un notebook à un service temps réel : architecturons !
 

Mais de SOAT

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018SOAT
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libéréeSOAT
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !SOAT
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseSOAT
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-DurandSOAT
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-DurandSOAT
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-DurandSOAT
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotSOAT
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014SOAT
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014SOAT
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soatSOAT
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...SOAT
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014SOAT
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)SOAT
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#SOAT
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatSOAT
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesSOAT
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 

Mais de SOAT (20)

Back from Microsoft //Build 2018
Back from Microsoft //Build 2018Back from Microsoft //Build 2018
Back from Microsoft //Build 2018
 
L'entreprise libérée
L'entreprise libéréeL'entreprise libérée
L'entreprise libérée
 
Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !Amélioration continue, c'est l'affaire de tous !
Amélioration continue, c'est l'affaire de tous !
 
JAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entrepriseJAVA 8 : Migration et enjeux stratégiques en entreprise
JAVA 8 : Migration et enjeux stratégiques en entreprise
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
3/3 : The path to CDI 2.0 - Antoine Sabot-Durand
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
 
2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand2/3 : CDI advanced - Antoine Sabot-Durand
2/3 : CDI advanced - Antoine Sabot-Durand
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu ParisotDans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
Dans l'enfer du Web Mobile - un retour d'expérience - Mathieu Parisot
 
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
RxJava, Getting Started - David Wursteisen - 16 Octobre 2014
 
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014Nio sur Netty par Mouhcine Moulou - 3 avril 2014
Nio sur Netty par Mouhcine Moulou - 3 avril 2014
 
20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat20140123 java8 lambdas_jose-paumard-soat
20140123 java8 lambdas_jose-paumard-soat
 
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
Développer des applications iOS et Android avec c# grâce à Xamarin par Cyril ...
 
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014Amazon Web Service par Bertrand Lehurt - 11 mars 2014
Amazon Web Service par Bertrand Lehurt - 11 mars 2014
 
ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)ASP.Net Web API - Léonard Labat (18 février 2014)
ASP.Net Web API - Léonard Labat (18 février 2014)
 
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 Xamarin et le développement natif d’applications Android, iOS et Windows en C# Xamarin et le développement natif d’applications Android, iOS et Windows en C#
Xamarin et le développement natif d’applications Android, iOS et Windows en C#
 
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - SoatA la découverte du Responsive Web Design par Mathieu Parisot - Soat
A la découverte du Responsive Web Design par Mathieu Parisot - Soat
 
MongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de donnéesMongoDB : la base NoSQL qui réinvente la gestion de données
MongoDB : la base NoSQL qui réinvente la gestion de données
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 

Mathieu parisot spring profiles

  • 1. 2013-06-12 Profiles Spring 1 Mathieu PARISOT @matparisot
  • 2. Kézako ? "Changer le comportement de votre application en fonction d'un (ou plusieurs) profile(s) actif(s)" 2013-06-12 Profiles Spring 2
  • 3. L'exemple type C'est l'histoire d'une BDD et d'un développeur qui veut faire des tests… 2013-06-12 Profiles Spring 3
  • 4. Mon cas d'utilisation 2013-06-12 Profiles Spring 4 Mon ServeurServeur sécu Request Response Headers Authentification Mock authent
  • 5. La solution retenue 1/2 @Controller public class MyControllerNoAuthent { … @RequestMapping(value="/url1") public String method(HttpRequest request) { return "ma page 1"; } … } 2013-06-12 Profiles Spring 5
  • 6. La solution retenue 2/2 @Controller public class MyControllerMockAuthent { private @Inject MyControllerNoAuthent controller; … @RequestMapping(value="/url1") public String method(HttpRequest request) { simulateAuthentServer(request); return controller.method(request); } … } 2013-06-12 Profiles Spring 6
  • 7. Sauf que… On ne peut pas avoir plusieurs controllers sur la même URL… 2013-06-12 Profiles Spring 7
  • 8. Les profiles Spring 1/2 @Controller @Profile("default") public class MyControllerNoAuthent { … @RequestMapping(value="/url1") public String method(HttpRequest request) { return "ma page 1"; } … } 2013-06-12 Profiles Spring 8
  • 9. La solution retenue 2/2 @Controller @Profile("dev") public class MyControllerMockAuthent { private @Inject MyControllerNoAuthent controller; … @RequestMapping(value="/url1") public String method(HttpRequest request) { simulateAuthentServer(request); return controller.method(request); } … } 2013-06-12 Profiles Spring 9
  • 10. Activer notre profile 1/3 Dans le web.xml : <context-param> <param-name>spring.profiles.active</param-name> <param-value>dev</param-value> </context-param> 2013-06-12 Profiles Spring 10
  • 11. Activer notre profile 2/3 En ligne de commande : -Dspring.profile.active=dev 2013-06-12 Profiles Spring 11
  • 12. Activer notre profile 3/3 Via un fichier properties : public class MyCtxInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { public void initialize(ConfigurableApplicationContext appCtx) { appCtx.getEnvironment().getPropertySources().addLast( new ResourcePropertySource("classpath:/my.properties")); appCtx.getEnvironment().setActiveProfiles( appCtx.getProperties("myProfile")); } } 2013-06-12 Profiles Spring 12
  • 13. Activer notre profile 3/3 bis Ne pas oublier dans le web.xml : <context-param> <param-name>contextInitializerClasses</param-name> <param-value>com.me.MyCtxInitializer</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> 2013-06-12 Profiles Spring 13
  • 14. La conclusion ⦿C'est simple ⦿Pratique ⦿Très peu verbeux en annotation ⦿Mais ça rajoute de la magie… 2013-06-12 Profiles Spring 14
  • 15. Des questions ? 2013-06-12 Profiles Spring 15