Spring Boot - Anwendungseigenschaften
Die Anwendungseigenschaften unterstützen uns bei der Arbeit in verschiedenen Umgebungen. In diesem Kapitel erfahren Sie, wie Sie die Eigenschaften einer Spring Boot-Anwendung konfigurieren und angeben.
Befehlszeileneigenschaften
Die Spring Boot-Anwendung konvertiert die Befehlszeileneigenschaften in die Eigenschaften der Spring Boot-Umgebung. Befehlszeileneigenschaften haben Vorrang vor den anderen Eigenschaftsquellen. Standardmäßig verwendet Spring Boot die 8080-Portnummer, um den Tomcat zu starten. Lassen Sie uns lernen, wie Sie die Portnummer mithilfe der Befehlszeileneigenschaften ändern.
Step 1 - Nachdem Sie eine ausführbare JAR-Datei erstellt haben, führen Sie sie mit dem Befehl aus java –jar <JARFILE>.
Step 2 - Verwenden Sie den im folgenden Screenshot angegebenen Befehl, um die Portnummer für die Spring Boot-Anwendung mithilfe der Befehlszeileneigenschaften zu ändern.
Note Mit dem Trennzeichen können Sie mehr als eine Anwendungseigenschaft bereitstellen.
Eigenschaftendatei
Eigenschaftendateien werden verwendet, um 'N' Anzahl von Eigenschaften in einer einzelnen Datei zu behalten, um die Anwendung in einer anderen Umgebung auszuführen. In Spring Boot werden die Eigenschaften in der gespeichertapplication.properties Datei unter dem Klassenpfad.
Die Datei application.properties befindet sich in der src/main/resourcesVerzeichnis. Der Code für das Beispielapplication.properties Datei ist unten angegeben -
server.port = 9090
spring.application.name = demoservice
Beachten Sie, dass in dem oben gezeigten Code der Demoservice der Spring Boot-Anwendung auf dem Port 9090 gestartet wird.
YAML-Datei
Spring Boot unterstützt YAML-basierte Eigenschaftenkonfigurationen zum Ausführen der Anwendung. Anstatt vonapplication.properties, wir können benutzen application.ymlDatei. Diese YAML-Datei sollte auch im Klassenpfad aufbewahrt werden. Die Probeapplication.yml Datei ist unten angegeben -
spring:
application:
name: demoservice
server:
port: 9090
Externalisierte Eigenschaften
Anstatt die Eigenschaftendatei unter Klassenpfad zu belassen, können wir die Eigenschaften an einem anderen Speicherort oder Pfad aufbewahren. Während der Ausführung der JAR-Datei können wir den Pfad der Eigenschaftendatei angeben. Mit dem folgenden Befehl können Sie den Speicherort der Eigenschaftendatei angeben, während Sie die JAR ausführen.
-Dspring.config.location = C:\application.properties
Verwendung von @Value Annotation
Die Annotation @Value wird verwendet, um den Wert der Umgebung oder der Anwendungseigenschaft in Java-Code zu lesen. Die Syntax zum Lesen des Eigenschaftswerts ist unten dargestellt:
@Value("${property_key_name}")
Schauen Sie sich das folgende Beispiel an, das die Syntax zum Lesen der zeigt spring.application.name Eigenschaftswert in der Java-Variablen mithilfe der Annotation @Value.
@Value("${spring.application.name}")
Beachten Sie zum besseren Verständnis den unten angegebenen Code -
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
@Value("${spring.application.name}")
private String name;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/")
public String name() {
return name;
}
}
Note - Wenn die Eigenschaft beim Ausführen der Anwendung nicht gefunden wird, löst Spring Boot die Ausnahme "Unzulässiges Argument" aus Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".
Um das Platzhalterproblem zu beheben, können Sie den Standardwert für die Eigenschaft mithilfe der unten angegebenen Syntax festlegen.
@Value("${property_key_name:default_value}")
@Value("${spring.application.name:demoservice}")
Aktives Spring Boot-Profil
Spring Boot unterstützt verschiedene Eigenschaften basierend auf dem aktiven Spring-Profil. Beispielsweise können wir zwei separate Dateien für Entwicklung und Produktion aufbewahren, um die Spring Boot-Anwendung auszuführen.
Aktives Federprofil in application.properties
Lassen Sie uns verstehen, wie Spring ein aktives Profil in application.properties hat. Standardmäßig Anwendung. Eigenschaften werden verwendet, um die Spring Boot-Anwendung auszuführen. Wenn Sie profilbasierte Eigenschaften verwenden möchten, können wir für jedes Profil eine separate Eigenschaftendatei erstellen, wie unten gezeigt.
application.properties
server.port = 8080
spring.application.name = demoservice
application-dev.properties
server.port = 9090
spring.application.name = demoservice
application-prod.properties
server.port = 4431
spring.application.name = demoservice
Während der Ausführung der JAR-Datei müssen wir das aktive Spring-Profil basierend auf jeder Eigenschaftendatei angeben. Standardmäßig verwendet die Spring Boot-Anwendung die Datei application.properties. Der Befehl zum Einstellen des aktiven Federprofils ist unten dargestellt:
Sie können den Namen des aktiven Profils im Konsolenprotokoll sehen, wie unten gezeigt -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
Jetzt hat Tomcat auf dem Port 9090 (http) wie unten gezeigt gestartet -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
Sie können das aktive Produktionsprofil wie unten gezeigt einstellen -
Sie können den Namen des aktiven Profils im Konsolenprotokoll sehen, wie unten gezeigt -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
Jetzt startete Tomcat auf dem Port 4431 (http) wie unten gezeigt -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)
Federaktives Profil für application.yml
Lassen Sie uns verstehen, wie Sie das aktive Spring-Profil für application.yml beibehalten. Wir können die aktiven Profileigenschaften von Spring in der Single behaltenapplication.ymlDatei. Sie müssen keine separate Datei wie application.properties verwenden.
Das Folgende ist ein Beispielcode, um die aktiven Spring-Profile in der Datei application.yml zu behalten. Beachten Sie, dass das Trennzeichen (---) verwendet wird, um jedes Profil in der Datei application.yml zu trennen.
spring:
application:
name: demoservice
server:
port: 8080
---
spring:
profiles: dev
application:
name: demoservice
server:
port: 9090
---
spring:
profiles: prod
application:
name: demoservice
server:
port: 4431
Der Befehl zum Festlegen des aktiven Entwicklungsprofils ist unten angegeben:
Sie können den Namen des aktiven Profils im Konsolenprotokoll sehen, wie unten gezeigt -
2017-11-26 08:41:37.202 INFO 14104 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
Jetzt startete Tomcat auf dem Port 9090 (http) wie unten gezeigt -
2017-11-26 08:41:46.650 INFO 14104 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
Der Befehl zum Festlegen des aktiven Produktionsprofils ist unten angegeben:
Sie können den Namen des aktiven Profils im Konsolenprotokoll sehen, wie unten gezeigt -
2017-11-26 08:43:10.743 INFO 13400 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
Dadurch wird Tomcat auf dem Port 4431 (http) wie unten gezeigt gestartet:
2017-11-26 08:43:14.473 INFO 13400 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)