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)