web-dev-qa-db-fra.com

Définition du profil actif par défaut dans Spring-Boot

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

26
DarVar

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
45
PaulNUK

ajouter --spring.profiles.active=production

Exemple:

Java -jar file.jar --spring.profiles.active=production
7
Jaya Naresh

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

6
Tom Van Rossom

Je le fais de cette façon

    System.setProperty("spring.profiles.default", "dev");

au tout début de main(...)

6
scorpp

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.

5
alpez

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
2

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:

Comment obtenez-vous le profil d’environnement actif/par défaut actuel par programmation au printemps?

1
user1653042

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 

 enter image description here

0
Jay