Geben Sie in jvmArgs der BootRun-Taskeinstellung von build.gradle das Profil im Systemeigenschaftswert spring.profiles.active an.
build.gradle
//Fügen Sie Einstellungen für die bootRun-Task hinzu
bootRun {
//Geben Sie das Fußprofil an
jvmArgs = ['-Dspring.profiles.active=foobar']
}
Referenz:
Ich habe den Quellcode mit Spring Initializr generiert und nach Bedarf hinzugefügt / gelöscht / bearbeitet.
├── build.gradle
├── settings.gradle
└── src
└── main
├── java
│ └── com
│ └── example
│ └── demo
│ └── DemoApplication.java
└── resources
├── application-foobar.properties
└── application.properties
build.gradle
Konfigurationsdatei für Gradle erstellen. Hinzufügen von Einstellungen für die bootRun-Aufgabe.
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()
}
//Fügen Sie Einstellungen für die bootRun-Task hinzu
bootRun {
//Geben Sie ein Profil an
jvmArgs = ['-Dspring.profiles.active=foobar']
}
settings.gradle
Die von Spring Initializr generierte wird unverändert verwendet.
settings.gradle
rootProject.name = 'demo'
DemoApplication.java
Ein Prozess, der JSON zurückgibt, wenn auf die oberste Seite zugegriffen wird, wurde hinzugefügt.
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;
//Gibt JSON beim Zugriff auf die Startseite zurück
@RequestMapping("/")
public ResponseEntity<Map<String, Object>> top() {
Map<String, Object> body = new HashMap<>();
//Anwendbares Profil
body.put("profiles", env.getActiveProfiles());
// application-*.Wert aus Eigenschaften erhalten
body.put("my.sample", env.getProperty("my.sample"));
body.put("my.message", env.getProperty("my.message"));
return new ResponseEntity<>(body, HttpStatus.OK);
}
}
application.properties
Die Standardeinstellungsdatei für Eigenschaften. Wenn Sie kein Profil angeben, können Sie die Werte in dieser Datei verwenden.
my.sample=This is a sample property.
my.message=This is a application.properties.
application-foobar.properties
Eigenschaftseinstellungsdatei bei Verwendung des Foobar-Profils. Bei Verwendung des foobar-Profils wird der Wert in application.properties mit dem Wert in dieser Datei überschrieben.
my.message=This is a application-foobar.properties.
Starten Sie Spring Boot mit dem Befehl gradle bootRun.
$ gradle bootRun
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.2.RELEASE)
Wenn Sie mit Curl von einer anderen Konsole usw. aus zugreifen, wird JSON zurückgegeben.
Wenn die BootRun-Taskeinstellung von gradle.build nicht beschrieben wird, wird der folgende JSON zurückgegeben. Der Wert von application.properties wird ausgegeben.
$ curl http://localhost:8080/
{"my.sample":"This is a sample property.","profiles":[],"my.message":"This is a application.properties."}
Wenn jvmArgs = ['-Dspring.profiles.active = foobar'] in den BootRun-Taskeinstellungen von gradle.build beschrieben wird, wird der folgende JSON zurückgegeben. Der Wert von application-foobar.properties wird vorrangig vor dem Wert von application.properties ausgegeben.
$ curl http://localhost:8080/
{"my.sample":"This is a sample property.","profiles":["foobar"],"my.message":"This is a application-foobar.properties."}
Recommended Posts