--Übersetzte das Dokument über die Priorität des Einstellungswerts der externen Konfiguration von Spring Boot 2.2.0.M4 ins Japanische. --Original: Spring Boot-Referenzdokumentation --4.2. Externalisierte Konfiguration
Externe Einstellungen
Spring Boot kann externalisiert werden, sodass derselbe Anwendungscode in verschiedenen Umgebungen ausgeführt werden kann. Sie können Ihre Einstellungen mithilfe von Eigenschaftendateien, YAML-Dateien, Umgebungsvariablen und Befehlszeilenargumenten externalisieren. Einstellungen können mithilfe der Annotation @Value direkt in die Bean eingefügt werden, auf die über Spring's Environment zugegriffen wird, oder über @ConfigurationProperties an ein strukturiertes Objekt gebunden werden.
Spring Boot verwendet einen speziellen Bestellmechanismus namens PropertySource. Es ermöglicht ein flexibles Überschreiben von Einstellungen.
Die Einstellungen werden in der folgenden Prioritätsreihenfolge angewendet:
4.2. Externalized Configuration
Spring Boot lets you externalize your configuration so that you can work with the same application code in different environments. You can use properties files, YAML files, environment variables, and command-line arguments to externalize configuration. Property values can be injected directly into your beans by using the @Value annotation, accessed through Spring’s Environment abstraction, or be bound to structured objects through @ConfigurationProperties.
Spring Boot uses a very particular PropertySource order that is designed to allow sensible overriding of values. Properties are considered in the following order:
Führen Sie den Beispielcode aus, um die Priorität anzuzeigen.
application.properties
Beschreiben Sie den Einstellungswert in application.properties.
message=Hello, application.properties!
Application.java
package sample;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Controller.java
Die Einstellungswertnachricht wird in JSON zurückgegeben.
package sample;
import java.util.HashMap;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
@Value("${message}")
private String message;
@RequestMapping("/")
public HashMap<String, Object> index() {
return new HashMap<String, Object>() {
{
put("message", message);
}
};
}
}
Führen Sie den Spring Boot-Server mit dem Befehl java aus.
$ java -jar target/sample.jar
Beim Zugriff auf den Server wird der in application.properties beschriebene Nachrichteneinstellungswert zurückgegeben.
$ curl http://localhost:8080/
{"message":"Hello, application.properties!"}
Verwenden Sie -D, um JSON in der Java-Systemeigenschaft spring.application.json anzugeben, und führen Sie den Spring Boot-Server mit dem Befehl java aus.
$ java -Dspring.application.json='{"message":"Hello, Java System properties!"}' -jar target/sample.jar
Beim Zugriff auf den Server wird die in den Java-Systemeigenschaften angegebene Nachrichteneinstellung zurückgegeben.
$ curl http://localhost:8080/
{"message":"Hello, Java System properties!"}
Java-Systemeigenschaften haben Vorrang vor application.properties. Dies liegt daran, dass die 9. und 15. Priorität in der vorherigen Liste höher sind als die 9 .. "9. Java-Systemeigenschaften (System.getProperties ())." "15. In JAR gepackte Anwendungseigenschaften (application- {profile} .properties und YAML)."
Recommended Posts