Partage de technologie

Comment configurer différentes variables et principes d'environnement pour les projets Java

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Comment configurer différents profils

Tout d'abord, un projet Java nécessite différentes configurations d'environnement lors du packaging, les configurations correspondantes sont automatiquement utilisées. Alors, comment y parvenir ?

Créez ou ajoutez un fichier application.yml dans le répertoire src/main/resources de votre projet Spring Boot. C'est ici que Spring Boot recherche les fichiers de configuration par défaut. Ce fichier peut ajouter des configurations courantes.

Ensuite, vous pouvez également créer des fichiers tels que application-test.yml, application-prod.yml, etc. dans le même répertoire, Spring Boot reconnaîtra automatiquement ces fichiers de configuration spécifiques au profil. Vous pouvez définir des paramètres pour différents environnements dans ces fichiers, tels que des adresses de base de données, des adresses de cache Redis, etc.
Autrement dit, dans le répertoire src/main/resources, il peut y avoir plusieurs fichiers comme celui-ci :

application.yml
application-prod.yml
application-test.yml
  • 1
  • 2
  • 3

Ensuite, vous pouvez utiliser application-test.yml et application-prod.yml pour déclarer deux variables avec la même configuration mais des valeurs différentes.Par exemple
application-test.yml:

mysql:
  url: https://xx.test.com/mysql
  • 1
  • 2

application-prod.yml:

mysql:
  url: https://xx.online.com/mysql
  • 1
  • 2

En code Java, vous pouvez utiliser cette URL de manière dynamique :

    @Value("${mysql.url}")
    protected String mysqlUrl;
  • 1
  • 2

Parfait.

Alors, comment utiliser automatiquement le fichier.yml spécifique au profil correspondant lorsque le système est en cours d'exécution ?Veuillez voir ci-dessous

Le principe de la commutation automatique de profil

Voyons comment les variables d'environnement sont transmises au projet couche par couche depuis le réseau externe.
Tout d’abord, un projet Java est généralement empaqueté par Docker. Alors, commençons par Docker :

  1. Commande de packaging Docker, avec paramètres d'environnement :
docker build -f assistant-web-api/qke/Dockerfile -t docker-registry.qiyi.virtual/mbd-ai/assistant-web-api-test:$tag . --build-arg dc_env=test
  • 1

Mots clés,construire-arg , définissez un paramètre, dc_env=test

  1. Fichier Docker, déclarer àdc_env, et utilisé pour la commande mvn
ARG dc_env
...
RUN mvn -T 8 -DdisableRpm=true -pl '!assistant-web-manager' clean package -Dmaven.test.skip=true -P${dc_env}
  • 1
  • 2
  • 3

Notez que -P signifie définir le profil

  1. pom.xml, configurer différents environnements

La commande mvn de l'étape précédente a ajouté -P. Où est-elle utilisée ? Bien sûr, c'est dans le fichier de configuration de Marven, qui est pom.xml.

<profiles>
        <profile>
            <id>test</id>
            <properties>
                <profile.active>test</profile.active>
                <log.env>test</log.env>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profile.active>prod</profile.active>
                <log.env>prod</log.env>
            </properties>
        </profile>
    </profiles>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

Ci-dessus, 2 variables d'environnement sont ajoutées.Pour chaque variable, des propriétés sont définies, c'est-à-direprofil.actif
Où peut-on utiliser cette valeur ?

Utilisez-le dans le fichier application.yml principal !

server:
  profiles:
    active: @profile.active@
  • 1
  • 2
  • 3

Définissez le profil à utiliser en fonction de la valeur de la variable profile.active à l'étape précédente.

Depuis lors, les variables définies à partir du package docker ont été transmises au fichier yml principal. Dans ce fichier, quelle que soit la valeur de server.profiles.active, quelle configuration de sous-yml sera utilisée. Par exemple, s'il s'agit de test, la configuration de application-test.yml sera chargée ! ! !

Comment changer d'environnement dans l'environnement de développement

  1. Tout d’abord, Marven se synchronise en premier. Après la synchronisation, vérifiez un environnement.
    Insérer la description de l'image ici

  2. Ensuite, compilez et emballez localement, et spécifiez les variables d'environnement via -P :
    Insérer la description de l'image ici

  3. Enfin, pour exécuter, cliquez sur le coin supérieur droit de l'image ci-dessous. Une fenêtre contextuelle Modifier la configuration apparaîtra. Dans le profil actif, remplissez les variables d'environnement correspondantes, telles que test.
    Insérer la description de l'image ici

  4. Enfin, vous pouvez cliquer sur Exécuter !