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)