Spring Boot - Właściwości aplikacji

Właściwości aplikacji pomagają nam pracować w różnych środowiskach. W tym rozdziale dowiesz się, jak skonfigurować i określić właściwości aplikacji Spring Boot.

Właściwości wiersza poleceń

Aplikacja Spring Boot konwertuje właściwości wiersza poleceń na właściwości Spring Boot Environment. Właściwości wiersza polecenia mają pierwszeństwo przed innymi źródłami właściwości. Domyślnie Spring Boot używa numeru portu 8080 do uruchomienia serwera Tomcat. Nauczmy się, jak zmienić numer portu, korzystając z właściwości wiersza poleceń.

Step 1 - Po utworzeniu wykonywalnego pliku JAR uruchom go za pomocą polecenia java –jar <JARFILE>.

Step 2 - Użyj polecenia podanego na zrzucie ekranu podanym poniżej, aby zmienić numer portu dla aplikacji Spring Boot za pomocą właściwości wiersza poleceń.

Note - Możesz podać więcej niż jedną właściwości aplikacji, używając separatora -.

Plik właściwości

Pliki właściwości służą do zachowania liczby „N” właściwości w jednym pliku w celu uruchomienia aplikacji w innym środowisku. W Spring Boot właściwości są przechowywane wapplication.properties plik w ścieżce klas.

Plik application.properties znajduje się w katalogu src/main/resourcesinformator. Kod przykładowyapplication.properties plik jest podany poniżej -

server.port = 9090
spring.application.name = demoservice

Zauważ, że w kodzie pokazanym powyżej usługa demo aplikacji Spring Boot uruchamia się na porcie 9090.

Plik YAML

Spring Boot obsługuje konfiguracje właściwości oparte na YAML do uruchamiania aplikacji. Zamiastapplication.properties, możemy użyć application.ymlplik. Ten plik YAML również powinien być przechowywany w ścieżce klas. Próbkaapplication.yml plik jest podany poniżej -

spring:
   application:
      name: demoservice
   server:
port: 9090

Właściwości eksternalizowane

Zamiast trzymać plik właściwości w ścieżce klas, możemy przechowywać właściwości w innej lokalizacji lub ścieżce. Podczas uruchamiania pliku JAR możemy określić ścieżkę do pliku właściwości. Możesz użyć następującego polecenia, aby określić lokalizację pliku właściwości podczas uruchamiania pliku JAR -

-Dspring.config.location = C:\application.properties

Korzystanie z adnotacji @Value

Adnotacja @Value służy do odczytywania wartości właściwości środowiska lub aplikacji w kodzie Java. Składnia służąca do odczytywania wartości właściwości jest pokazana poniżej -

@Value("${property_key_name}")

Spójrz na poniższy przykład, który przedstawia składnię odczytu spring.application.name wartość właściwości w zmiennej Java przy użyciu adnotacji @Value.

@Value("${spring.application.name}")

Przestrzegaj kodu podanego poniżej, aby lepiej zrozumieć -

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 - Jeśli właściwość nie zostanie znaleziona podczas uruchamiania aplikacji, Spring Boot zgłasza wyjątek Illegal Argument as Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".

Aby rozwiązać problem z symbolem zastępczym, możemy ustawić domyślną wartość właściwości za pomocą składni thr podanej poniżej -

@Value("${property_key_name:default_value}") @Value("${spring.application.name:demoservice}")

Profil aktywny podczas rozruchu sprężynowego

Spring Boot obsługuje różne właściwości w oparciu o aktywny profil Spring. Na przykład, możemy zachować dwa oddzielne pliki na potrzeby programowania i produkcji, aby uruchomić aplikację Spring Boot.

Sprężynowy profil aktywny w application.properties

Pozwól nam zrozumieć, jak mieć aktywny profil Spring w application.properties. Domyślnie application. właściwości zostaną użyte do uruchomienia aplikacji Spring Boot. Jeśli chcesz korzystać z właściwości opartych na profilu, możemy zachować osobny plik właściwości dla każdego profilu, jak pokazano poniżej -

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

Podczas uruchamiania pliku JAR musimy określić aktywny profil sprężyny na podstawie każdego pliku właściwości. Domyślnie aplikacja Spring Boot korzysta z pliku application.properties. Polecenie ustawienia aktywnego profilu sprężyny pokazano poniżej -

Możesz zobaczyć nazwę aktywnego profilu w dzienniku konsoli, jak pokazano poniżej -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: dev

Teraz Tomcat uruchomił się na porcie 9090 (http), jak pokazano poniżej -

2017-11-26 08:13:20.185  INFO 14028 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

Możesz ustawić aktywny profil produkcyjny, jak pokazano poniżej -

Możesz zobaczyć nazwę aktywnego profilu w dzienniku konsoli, jak pokazano poniżej -

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.demo.DemoApplication  :
   The following profiles are active: prod

Teraz Tomcat wystartował na porcie 4431 (http), jak pokazano poniżej -

2017-11-26 08:13:20.185  INFO 14028 --- [          
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)

Profil sprężynujący do application.yml

Pozwól nam zrozumieć, jak zachować aktywny profil Spring dla application.yml. Możemy zachować właściwości aktywnego profilu Spring w pojedynczymapplication.ymlplik. Nie ma potrzeby używania oddzielnego pliku, takiego jak application.properties.

Poniżej znajduje się przykładowy kod, który utrzymuje aktywne profile Spring w pliku application.yml. Zauważ, że separator (---) jest używany do oddzielania każdego profilu w pliku application.yml.

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

Polecenie do ustawienia aktywnego profilu rozwoju jest podane poniżej -

Możesz zobaczyć nazwę aktywnego profilu w dzienniku konsoli, jak pokazano poniżej -

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: dev

Teraz Tomcat wystartował na porcie 9090 (http), jak pokazano poniżej -

2017-11-26 08:41:46.650  INFO 14104 --- [           
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 9090 (http)

Polecenie do ustawienia aktywnego profilu produkcji podano poniżej -

Możesz zobaczyć nazwę aktywnego profilu w dzienniku konsoli, jak pokazano poniżej -

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.tutorialspoint.demo.DemoApplication  : 
   The following profiles are active: prod

Spowoduje to uruchomienie Tomcata na porcie 4431 (http), jak pokazano poniżej:

2017-11-26 08:43:14.473  INFO 13400 --- [     
   main] s.b.c.e.t.TomcatEmbeddedServletContainer : 
   Tomcat started on port(s): 4431 (http)