[JAVA] Définir le profil Spring lors de l'exécution de la tâche bootRun avec Spring Boot Gradle Plugin

Méthode

Dans jvmArgs du paramètre de tâche bootRun de build.gradle, spécifiez le profil dans la valeur de propriété système spring.profiles.active.

build.gradle


//Ajouter des paramètres pour la tâche bootRun
bootRun {
  //Spécifiez le profil foobar
  jvmArgs = ['-Dspring.profiles.active=foobar']
}

Référence:

Contrôle de fonctionnement

J'ai généré le code source avec Spring Initializr et l'ai ajouté / supprimé / modifié au besoin.

Cet environnement

Liste des codes sources

├── build.gradle
├── settings.gradle
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── demo
        │               └── DemoApplication.java
        └── resources
            ├── application-foobar.properties
            └── application.properties

build.gradle

Construisez le fichier de configuration pour Gradle. Ajout de paramètres pour la tâche bootRun.

build.gradle


plugins {
  id 'org.springframework.boot' version '2.2.2.RELEASE'
  id 'io.spring.dependency-management' version '1.0.8.RELEASE'
  id 'java'
}

group = 'com.example'
version = '0.0.1'
sourceCompatibility = '11'

repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
  }
}

test {
  useJUnitPlatform()
}

//Ajouter des paramètres pour la tâche bootRun
bootRun {
  //Spécifiez un profil
  jvmArgs = ['-Dspring.profiles.active=foobar']
}

settings.gradle

Celui généré par Spring Initializr est utilisé tel quel.

settings.gradle


rootProject.name = 'demo'

DemoApplication.java

Un processus qui renvoie JSON lors de l'accès à la première page a été ajouté.

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@SpringBootApplication
@RestController
public class DemoApplication {

  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @Autowired
  private Environment env;

  //Renvoie JSON lors de l'accès à la première page
  @RequestMapping("/")
  public ResponseEntity<Map<String, Object>> top() {

    Map<String, Object> body = new HashMap<>();

    //Profil applicable
    body.put("profiles", env.getActiveProfiles());

    // application-*.Valeur obtenue à partir des propriétés
    body.put("my.sample", env.getProperty("my.sample"));
    body.put("my.message", env.getProperty("my.message"));

    return new ResponseEntity<>(body, HttpStatus.OK);
  }
}

application.properties

Le fichier de paramètres de propriété par défaut. Si vous ne spécifiez pas de profil, vous pouvez utiliser les valeurs de ce fichier.

my.sample=This is a sample property.
my.message=This is a application.properties.

application-foobar.properties

Fichier de définition des propriétés lors de l'utilisation du profil foobar. Lors de l'utilisation du profil foobar, la valeur de application.properties est remplacée par la valeur de ce fichier.

my.message=This is a application-foobar.properties.

Contrôle de fonctionnement

Démarrez Spring Boot avec la commande gradle bootRun.

$ gradle bootRun

> Task :bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)

Si vous accédez avec curl depuis une autre console, etc., JSON sera retourné.

Si le paramètre de tâche bootRun de gradle.build n'est pas décrit, le JSON suivant est renvoyé. La valeur de application.properties est sortie.

$ curl http://localhost:8080/
{"my.sample":"This is a sample property.","profiles":[],"my.message":"This is a application.properties."}

Si jvmArgs = ['-Dspring.profiles.active = foobar'] est décrit dans les paramètres de la tâche bootRun de gradle.build, le JSON suivant est renvoyé. La valeur de application-foobar.properties est sortie avec la priorité sur la valeur de application.properties.

$ curl http://localhost:8080/
{"my.sample":"This is a sample property.","profiles":["foobar"],"my.message":"This is a application-foobar.properties."}

Matériel de référence

Recommended Posts

Définir le profil Spring lors de l'exécution de la tâche bootRun avec Spring Boot Gradle Plugin
Définir des cookies avec Spring Boot
(IntelliJ + gradle) Hello World avec Spring Boot
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Exécutez l'application Scala avec Spring Boot via Gradle
Créez des projets Spring Boot par environnement avec Gradle
Je voulais classer la botte à ressort dans un multi-projet
Afficher la tâche Gradle dans le projet Spring Boot
[Note] Fichier de configuration lors de l'utilisation de Logback avec Spring Boot
Changer d'environnement avec Spring Boot application.properties et l'annotation @Profile
[Java] [Spring Boot] Spécifier le profil d'exécution --Spring Boot à partir de NetBeans
Un mémorandum lors de la création d'un service REST avec Spring Boot
Télécharger avec Spring Boot
Vérifiez comment définir le délai d'expiration lors de la connexion avec Spring + HikariCP + MySQL et de l'exécution de SQL
J'ai créé un plug-in qui exécute jextract avec des tâches Gradle
Définir le paramètre contextuel dans Spring Boot
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Calendrier des tâches du didacticiel Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Multi-projets Spring Boot 2 avec Gradle
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Spring Boot à partir de Docker
Hello World avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Utiliser l'authentification de base avec Spring Boot
Mémorandum lorsque Spring Boot 1.5.10 → Spring Boot 2.0.0
gRPC sur Spring Boot avec grpc-spring-boot-starter
Créez une application avec Spring Boot 2
Déploiement à chaud avec le développement Spring Boot
Liaison de base de données avec doma2 (Spring boot)
Comment configurer Spring Boot + PostgreSQL
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
(Intellij) Hello World avec Spring Boot
Créez une application avec Spring Boot
Fonction de profil Spring et application Spring Boot.
Google Cloud Platform avec Spring Boot 2.0.0
Implémenter l'application Spring Boot dans Gradle
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Mémo personnel Run Spring Boot + Projet Web Gradle avec Codenvy (Eclipse Che)