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:
J'ai généré le code source avec Spring Initializr et l'ai ajouté / supprimé / modifié au besoin.
├── 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.
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."}
Recommended Posts