Paramètres externes
Spring Boot peut être externalisé afin que le même code d'application puisse s'exécuter dans différents environnements. Vous pouvez externaliser vos paramètres à l'aide de fichiers de propriétés, de fichiers YAML, de variables d'environnement et d'arguments de ligne de commande. Les paramètres peuvent être injectés directement dans le bean à l'aide de l'annotation @Value, accessibles via Spring's Environment ou liés à un objet structuré via @ConfigurationProperties.
Spring Boot utilise un mécanisme de commande spécial appelé PropertySource. Il est conçu pour permettre l'écrasement flexible des paramètres.
Les paramètres sont appliqués dans l'ordre de priorité suivant:
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:
Exécutez l'exemple de code pour voir la priorité.
application.properties
Décrivez la valeur du paramètre dans 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
Le message de valeur de paramètre est renvoyé en JSON.
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);
}
};
}
}
Exécutez le serveur Spring Boot avec la commande java.
$ java -jar target/sample.jar
Lors de l'accès au serveur, la valeur de paramètre de message décrite dans application.properties est renvoyée.
$ curl http://localhost:8080/
{"message":"Hello, application.properties!"}
Utilisez -D pour spécifier JSON dans la propriété système Java spring.application.json et exécutez le serveur Spring Boot avec la commande java.
$ java -Dspring.application.json='{"message":"Hello, Java System properties!"}' -jar target/sample.jar
L'accès au serveur renvoie le paramètre de message spécifié dans les propriétés système Java.
$ curl http://localhost:8080/
{"message":"Hello, Java System properties!"}
Les propriétés système Java ont priorité sur application.properties. En effet, les 9e et 15e priorités de la liste précédente sont plus élevées que la 9e. "9. Propriétés système Java (System.getProperties ())." "15. Propriétés d'application empaquetées dans JAR (application- {profile} .properties et YAML)."
Recommended Posts