Dans mon application, j'ai des beans annotés avec @Profile("prod")
et @Profile("demo")
. Le premier, comme vous pouvez le deviner :), est utilisé sur les beans qui se connectent à la base de données de production et le second annote les beans qui utilisent une fausse DB ( HashMap
ou autre) - pour accélérer le développement.
Ce que j'aimerais avoir, c'est le profil par défaut ( "prod"
) qui sera toujours utilisé s'il n'est pas remplacé par " quelque chose-d'autre ".
Parfait serait d'avoir dans mon web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
puis remplacez-le par -Dspring.profiles.active="demo"
pour que je puisse faire:
mvn jetty:run -Dspring.profiles.active="demo".
Mais malheureusement, cela ne fonctionne pas. Une idée comment pourrais-je y parvenir? La configuration -Dspring.profiles.active="prod"
sur tous mes environnements n'est pas une option.
Définissez votre environnement de production comme profil par défaut dans votre web.xml
et si vous souhaitez utiliser un profil différent, passez-le comme propriété système
la source
spring.profiles.default=prod
dansapplication.properties
, puisapplication-prod.properties
ne sera pas chargé. C'est contre-intuitif.application.properties
fichier. Afin de savoir ce quiapplication-prod.properties
devrait être utilisé, vous devez connaître le profil. C'est ce que fait cette approche. Il définit des profils en dehors du contexte de ressort soit laweb.xml
variable d'environnement (par défaut) ou via (écrase la valeur par défaut).application-default.properties
chargement, je m'attends également à ce queapplication-newdefault.properties
ce soit également chargé. Ce n'est pas un problème avec votre solution, c'est un problème avec Spring ...J'ai le même problème, mais j'utilise WebApplicationInitializer afin de configurer le ServletContext par programme (Servlet 3.0+). Alors je fais ce qui suit:
la source
Vous pouvez également envisager de supprimer le profil PROD et utiliser @Profile ("! Démo")
la source
À propos de la définition du profil de production par défaut déjà publié @andih
Le moyen le plus simple de définir le profil par défaut pour le plugin maven jetty est d'inclure l'élément ci-dessous dans la configuration de votre plugin:
la source
Spring fournit deux propriétés distinctes lors de la détermination des profils actifs:
spring.profiles.active
et
spring.profiles.default
Si
spring.profiles.active
est défini, sa valeur détermine les profils actifs. Mais si cespring.profiles.active
n'est pas réglé, alors le printemps se tourne versspring.profiles.default.
Si ni
spring.profiles.active
nispring.profiles.default
n'est défini, il n'y a pas de profil actif et seuls les beans qui ne sont pas définis comme faisant partie d'un profil sont créés. Tout bean qui ne spécifie pas de profil appartient audefault
profil.la source
Vous pouvez configurer votre web.xml en tant que ressource filtrée et faire remplir cette valeur par maven à partir des paramètres de profil maven - c'est ce que nous faisons.
dans pom filtre toutes les ressources (vous pouvez le faire si vous n'avez pas de marquage $ {})
dans web.xml mettre
dans pom créer des profils maven
Maintenant vous pouvez utiliser
ou simplement
-P DEMO
avec n'importe quelle commande mavenla source