Je veux que mon profil actif par défaut soit production
si -Dspring.profiles.active
n'est pas défini.
J'ai essayé ce qui suit dans mon application.properties
mais cela n'a pas fonctionné:
spring.profiles.default=production
Version de démarrage du printemps = 1.3.5.RELEASE
Vous définissez ici le profil default par défaut (le profil utilisé sur tout bean si vous ne spécifiez pas l'annotation @Profile
) sur production
.
Ce que vous devez réellement faire est de définir le profil par défaut active, comme suit:
spring.profiles.active=production
ajouter --spring.profiles.active=production
Exemple:
Java -jar file.jar --spring.profiles.active=production
Mettez ceci dans l'App.Java:
public static void main(String[] args) throws UnknownHostException {
SpringApplication app = new SpringApplication(App.class);
SimpleCommandLinePropertySource source = new SimpleCommandLinePropertySource(args);
if (!source.containsProperty("spring.profiles.active") &&
!System.getenv().containsKey("SPRING_PROFILES_ACTIVE")) {
app.setAdditionalProfiles("production");
}
...
}
Voici comment cela se passe dans JHipster
Je le fais de cette façon
System.setProperty("spring.profiles.default", "dev");
au tout début de main(...)
Si vous utilisez Maven, je ferais quelque chose comme ceci:
Être production votre profil par défaut:
<properties>
<activeProfile>production</activeProfile>
</properties>
Et à titre d'exemple d'autres profils:
<profiles>
<!--Your default profile... selected if none specified-->
<profile>
<id>production</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<activeProfile>production</activeProfile>
</properties>
</profile>
<!--Profile 2-->
<profile>
<id>development</id>
<properties>
<activeProfile>development</activeProfile>
</properties>
</profile>
<!--Profile 3-->
<profile>
<id>otherprofile</id>
<properties>
<activeProfile>otherprofile</activeProfile>
</properties>
</profile>
<profiles>
Dans votre application.properties, vous devrez définir:
spring.profiles.active=@activeProfile@
Cela fonctionne pour moi à chaque fois, espérons que cela résoudra votre problème.
Tout d’abord, avec la solution ci-dessous, il est nécessaire de comprendre que le démarrage du printemps lit toujours le fichier application.properties
. Ainsi, les fichiers de profil de l'autre seulement compléteront et remplaceront les propriétés définies précédemment.
Considérant les fichiers suivants:
application.properties
application-qa.properties
application-prod.properties
1) très important Le application.properties
, et juste ce fichier , doivent avoir la ligne suivante:
[email protected]@
2) Modifiez ce que vous voulez dans les fichiers de configuration QA et PROD pour voir la différence entre les environnements.
3) En ligne de commande, démarrez l’application Spring Boot avec l’une des options suivantes:
L'application démarrera avec le fichier par défaut application.properties
:
mvn spring-boot:run
Il chargera le fichier application.properties
par défaut et, après le fichier application-qa.properties
, remplacera et/ou complétera la configuration par défaut:
mvn spring-boot:run -Dspring.profiles.active=qa
La même chose ici mais avec l'environnement de production au lieu de l'assurance qualité:
mvn spring-boot:run -Dspring.profiles.active=prod
Utilise actuellement Maven + Spring Boot. Notre solution était la suivante:
application.properties
#spring.profiles.active= # comment_out or remove
securityConfig.Java
@Value(${spring.profiles.active:[default_profile_name]}")
private String ACTIVE_PROFILE_NAME;
Le crédit commence par MartinMlima . Réponse similaire fournie ici:
Dans AWS LAMBDA:
Pour $ sam local
vous ajoutez la ligne suivante dans votre fichier yml de modèle sam:
Resources:
FunctionName:
Properties:
Environment:
Variables:
SPRING_PROFILES_ACTIVE: local
Mais dans AWS Console: Dans vos variables d'environnement Lambda, ajoutez simplement:
CLE: Java_TOOL_OPTIONS
VALEUR: -Dspring.profiles.active=dev