Spring Boot - Propriétés de l'application
Les propriétés d'application nous aident à travailler dans différents environnements. Dans ce chapitre, vous allez apprendre à configurer et à spécifier les propriétés d'une application Spring Boot.
Propriétés de la ligne de commande
L'application Spring Boot convertit les propriétés de la ligne de commande en propriétés Spring Boot Environment. Les propriétés de la ligne de commande ont priorité sur les autres sources de propriété. Par défaut, Spring Boot utilise le numéro de port 8080 pour démarrer Tomcat. Apprenons comment changer le numéro de port en utilisant les propriétés de la ligne de commande.
Step 1 - Après avoir créé un fichier JAR exécutable, exécutez-le en utilisant la commande java –jar <JARFILE>.
Step 2 - Utilisez la commande donnée dans la capture d'écran ci-dessous pour modifier le numéro de port de l'application Spring Boot en utilisant les propriétés de la ligne de commande.
Note - Vous pouvez fournir plusieurs propriétés d'application à l'aide du délimiteur -.
Fichier de propriétés
Les fichiers de propriétés sont utilisés pour conserver un nombre «N» de propriétés dans un seul fichier pour exécuter l'application dans un environnement différent. Dans Spring Boot, les propriétés sont conservées dans leapplication.properties fichier sous le chemin de classe.
Le fichier application.properties se trouve dans le src/main/resourcesannuaire. Le code de l'exempleapplication.properties le fichier est donné ci-dessous -
server.port = 9090
spring.application.name = demoservice
Notez que dans le code ci-dessus, le service de démonstration de l'application Spring Boot démarre sur le port 9090.
Fichier YAML
Spring Boot prend en charge les configurations de propriétés basées sur YAML pour exécuter l'application. Au lieu deapplication.properties, on peut utiliser application.ymlfichier. Ce fichier YAML doit également être conservé dans le chemin de classe. L'échantillonapplication.yml le fichier est donné ci-dessous -
spring:
application:
name: demoservice
server:
port: 9090
Propriétés externalisées
Au lieu de conserver le fichier de propriétés sous classpath, nous pouvons conserver les propriétés dans un emplacement ou un chemin différent. Lors de l'exécution du fichier JAR, nous pouvons spécifier le chemin du fichier de propriétés. Vous pouvez utiliser la commande suivante pour spécifier l'emplacement du fichier de propriétés lors de l'exécution du JAR -
-Dspring.config.location = C:\application.properties
Utilisation de l'annotation @Value
L'annotation @Value est utilisée pour lire la valeur de la propriété d'environnement ou d'application dans le code Java. La syntaxe pour lire la valeur de la propriété est indiquée ci-dessous -
@Value("${property_key_name}")
Regardez l'exemple suivant qui montre la syntaxe pour lire le spring.application.name valeur de propriété dans la variable Java à l'aide de l'annotation @Value.
@Value("${spring.application.name}")
Observez le code ci-dessous pour une meilleure compréhension -
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 - Si la propriété n'est pas trouvée lors de l'exécution de l'application, Spring Boot lève l'exception d'argument illégal comme Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".
Pour résoudre le problème d'espace réservé, nous pouvons définir la valeur par défaut de la propriété en utilisant la syntaxe thr donnée ci-dessous -
@Value("${property_key_name:default_value}")
@Value("${spring.application.name:demoservice}")
Profil actif Spring Boot
Spring Boot prend en charge différentes propriétés basées sur le profil actif Spring. Par exemple, nous pouvons conserver deux fichiers distincts pour le développement et la production afin d'exécuter l'application Spring Boot.
Profil actif de ressort dans application.properties
Voyons comment avoir un profil actif Spring dans application.properties. Par défaut, application. properties sera utilisé pour exécuter l'application Spring Boot. Si vous souhaitez utiliser des propriétés basées sur le profil, nous pouvons conserver un fichier de propriétés distinct pour chaque profil, comme indiqué ci-dessous -
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
Lors de l'exécution du fichier JAR, nous devons spécifier le profil actif du ressort en fonction de chaque fichier de propriétés. Par défaut, l'application Spring Boot utilise le fichier application.properties. La commande pour définir le profil actif du ressort est indiquée ci-dessous -
Vous pouvez voir le nom du profil actif dans le journal de la console comme indiqué ci-dessous -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
Maintenant, Tomcat a démarré sur le port 9090 (http) comme indiqué ci-dessous -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
Vous pouvez définir le profil actif Production comme indiqué ci-dessous -
Vous pouvez voir le nom du profil actif dans le journal de la console comme indiqué ci-dessous -
2017-11-26 08:13:16.322 INFO 14028 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
Maintenant, Tomcat a démarré sur le port 4431 (http) comme indiqué ci-dessous -
2017-11-26 08:13:20.185 INFO 14028 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)
Profil actif de ressort pour application.yml
Voyons comment garder le profil actif Spring pour application.yml. Nous pouvons conserver les propriétés du profil actif Spring dans le seulapplication.ymlfichier. Pas besoin d'utiliser le fichier séparé comme application.properties.
Voici un exemple de code pour conserver les profils actifs Spring dans le fichier application.yml. Notez que le délimiteur (---) est utilisé pour séparer chaque profil dans le fichier 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
La commande de définir le profil actif de développement est donnée ci-dessous -
Vous pouvez voir le nom du profil actif dans le journal de la console comme indiqué ci-dessous -
2017-11-26 08:41:37.202 INFO 14104 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: dev
Maintenant, Tomcat a démarré sur le port 9090 (http) comme indiqué ci-dessous -
2017-11-26 08:41:46.650 INFO 14104 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 9090 (http)
La commande pour définir le profil actif de production est donnée ci-dessous -
Vous pouvez voir le nom du profil actif dans le journal de la console comme indiqué ci-dessous -
2017-11-26 08:43:10.743 INFO 13400 --- [
main] com.tutorialspoint.demo.DemoApplication :
The following profiles are active: prod
Cela démarrera Tomcat sur le port 4431 (http) comme indiqué ci-dessous:
2017-11-26 08:43:14.473 INFO 13400 --- [
main] s.b.c.e.t.TomcatEmbeddedServletContainer :
Tomcat started on port(s): 4431 (http)