A l’occasion du Spring User Group, Mathieu Parisot vous fera découvrir l’utilisation des profiles spring pour changer le comportement de vos contrôleurs SpringMVC.
Pour cela, Mathieu s’appuiera sur un cas d’utilisation sur un projet réel.
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