Je dois coder une logique différente en fonction du profil de l'environnement actuel.
Comment obtenir les profils actuellement actifs et par défaut de Spring ?
Je dois coder une logique différente en fonction du profil de l'environnement actuel.
Comment obtenir les profils actuellement actifs et par défaut de Spring ?
Pour modifier un peu les choses afin de gérer le cas où la variable n'est pas définie, vous pourriez utiliser un fichier valeur par défaut :
@Value("${spring.profiles.active:unknown}")
private String activeProfile;
De cette façon, si spring.profiles.active
est définie, il la prendra sinon il prendra la valeur par défaut unknown
.
Aucune exception ne sera donc déclenchée. Et il n'est pas nécessaire de forcer l'ajout de quelque chose comme @ActiveProfiles("test")
dans votre test pour le faire passer.
Il semble qu'il y ait une demande pour pouvoir y accéder de manière statique.
Comment puis-je obtenir une telle chose dans les méthodes statiques d'une classe non gérée par ressort non gérées par ressort ? - Aetherus
C'est un hack, mais vous pouvez écrire votre propre classe pour l'exposer. Vous devez faire attention à ce que rien n'appelle SpringContext.getEnvironment()
avant que tous les beans aient été créés, car il n'y a aucune garantie que ce composant sera instancié.
@Component
public class SpringContext
{
private static Environment environment;
public SpringContext(Environment environment) {
SpringContext.environment = environment;
}
public static Environment getEnvironment() {
if (environment == null) {
throw new RuntimeException("Environment has not been set yet");
}
return environment;
}
}
Comme déjà mentionné plus haut. Vous pourriez automatiser l'environnement :
@Autowire
private Environment environment;
seulement vous pourriez faire la vérification de l'environnement nécessaire beaucoup plus facilement :
if (environment.acceptsProfiles(Profiles.of("test"))) {
doStuffForTestEnv();
} else {
doStuffForOtherProfiles();
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
@aweigold : obtenir le profil d'environnement actif/par défaut de façon programmatique dans spring 3.1. Quels autres détails vous faut-il ?