2016-12-06 3 views
1

J'essaie de définir le profil actif comme suit:app springboot: comment définir la propriété de profil avec spel?

Application.properties (intérieur classpath)

spring.profile.active = ${app.profile} 

La propriété "app.profile" provient de l'extérieur Application.properties JAR:

Fichier Application.properties (externe)

app.profile = dev 

Le ressort refusant de charger le profil "dev". quand je mets la propriété "spring.profile.active" à l'intérieur de classpath cela fonctionne comme prévu.

Il existe une alternative?

Merci

Répondre

0

Vous pouvez définir le profil actif dans le fichier web.xml de votre application web. S'il vous plaît voir ci-dessous l'extrait de code:

<context-param> 
    <param-name>spring.profiles.active</param-name> 
    <param-value>dev, testdb</param-value> 
</context-param> 

Si leur est pas web.xml et vous configuriong votre application Web en utilisant Java, vous pouvez utiliser WebApplicationInitializer. S'il vous plaît voir ci-dessous l'extrait de code:

class WebAppInitializer extends WebApplicationInitializer { 

    void onStartup(ServletContext container) { 
     AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); 
     rootContext.getEnvironment().setActiveProfiles("profileName"); 
     rootContext.register(SpringConfiguration.class); 
     container.addListener(new ContextLoaderListener(rootContext)); 
    } 
} 

WebAppInitializer besoin d'être annotée avec @Configuration pour que cela fonctionne.

S'il vous plaît laissez-moi savoir si cela aide ou si vous avez besoin de plus d'aide.

+0

Je travaille sur l'application avec REST seulement. "WebApplicationInitializer" est la bonne façon? – Idan

+0

Mon objectif est que l'utilisateur change la propriété "app.profile", puis spring.profile.active = $ {app.profile} définira le bon profil. Toutes les autres propriétés externes fonctionnent comme prévu, sauf le profil. – Idan

3

Vous pouvez spécifier le nom du profil lors du démarrage de l'application de démarrage Spring.

de CMD en cours d'exécution

java -jar my-first-spring-boot-app.jar -Dspring.profiles.active=dev 

Exécution d'Eclipse
ajouter spring.profiles.active=dev comme argument VM

Référez l'adresse suivante si vous voulez profil pro-grammaticalement défini.
Spring Boot Programmatically setting profiles

+0

Est-il possible de changer le nom de la propriété? car l'utilisateur va éditer ces propriétés externes – Idan

+0

aucune propriété ne peut changer (spring.profiles.active) seule la valeur (dev) est modifiable – Jobin

+0

Mon but est que l'utilisateur change la propriété "app.profile" et ensuite spring.profile.active = $ {app.profile} définira le bon profil. – Idan