Spring Boot - Propiedades de la aplicación

Las propiedades de la aplicación nos apoyan para trabajar en diferentes entornos. En este capítulo, aprenderá a configurar y especificar las propiedades de una aplicación Spring Boot.

Propiedades de la línea de comandos

La aplicación Spring Boot convierte las propiedades de la línea de comandos en propiedades del entorno Spring Boot. Las propiedades de la línea de comandos tienen prioridad sobre las otras fuentes de propiedades. De forma predeterminada, Spring Boot usa el número de puerto 8080 para iniciar Tomcat. Aprendamos cómo cambiar el número de puerto usando las propiedades de la línea de comandos.

Step 1 - Después de crear un archivo JAR ejecutable, ejecútelo usando el comando java –jar <JARFILE>.

Step 2 - Use el comando dado en la captura de pantalla que se muestra a continuación para cambiar el número de puerto para la aplicación Spring Boot usando las propiedades de la línea de comando.

Note - Puede proporcionar más de una propiedad de aplicación utilizando el delimitador -.

Archivo de propiedades

Los archivos de propiedades se utilizan para mantener un número 'N' de propiedades en un solo archivo para ejecutar la aplicación en un entorno diferente. En Spring Boot, las propiedades se mantienen en elapplication.properties archivo bajo la ruta de clase.

El archivo application.properties se encuentra en el src/main/resourcesdirectorio. El código de muestraapplication.properties archivo se da a continuación -

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

Tenga en cuenta que en el código que se muestra arriba, el servicio de demostración de la aplicación Spring Boot comienza en el puerto 9090.

Archivo YAML

Spring Boot admite configuraciones de propiedades basadas en YAML para ejecutar la aplicación. En vez deapplication.properties, nosotros podemos usar application.ymlarchivo. Este archivo YAML también debe mantenerse dentro de la ruta de clases. La muestraapplication.yml archivo se da a continuación -

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

Propiedades externalizadas

En lugar de mantener el archivo de propiedades en classpath, podemos mantener las propiedades en una ubicación o ruta diferente. Mientras ejecutamos el archivo JAR, podemos especificar la ruta del archivo de propiedades. Puede usar el siguiente comando para especificar la ubicación del archivo de propiedades mientras ejecuta el JAR:

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

Uso de la anotación @Value

La anotación @Value se utiliza para leer el valor de propiedad del entorno o de la aplicación en el código Java. La sintaxis para leer el valor de la propiedad se muestra a continuación:

@Value("${property_key_name}")

Mire el siguiente ejemplo que muestra la sintaxis para leer el spring.application.name valor de propiedad en la variable Java mediante la anotación @Value.

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

Observe el código que se proporciona a continuación para una mejor comprensión:

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 no se encuentra la propiedad mientras se ejecuta la aplicación, Spring Boot lanza la excepción de argumento ilegal como Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}".

Para resolver el problema del marcador de posición, podemos establecer el valor predeterminado para la propiedad usando la sintaxis thr que se proporciona a continuación:

@Value("${property_key_name:default_value}")

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

Perfil activo de Spring Boot

Spring Boot admite diferentes propiedades basadas en el perfil activo de Spring. Por ejemplo, podemos mantener dos archivos separados para desarrollo y producción para ejecutar la aplicación Spring Boot.

Perfil activo de primavera en application.properties

Entendamos cómo tener el perfil activo de Spring en application.properties. Por defecto, aplicación. Las propiedades se utilizarán para ejecutar la aplicación Spring Boot. Si desea utilizar propiedades basadas en perfiles, podemos mantener archivos de propiedades separados para cada perfil como se muestra a continuación:

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

Mientras ejecutamos el archivo JAR, necesitamos especificar el perfil activo de Spring en función de cada archivo de propiedades. De forma predeterminada, la aplicación Spring Boot usa el archivo application.properties. El comando para configurar el perfil activo del resorte se muestra a continuación:

Puede ver el nombre del perfil activo en el registro de la consola como se muestra a continuación:

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

Ahora, Tomcat se ha iniciado en el puerto 9090 (http) como se muestra a continuación:

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

Puede configurar el perfil activo de producción como se muestra a continuación:

Puede ver el nombre del perfil activo en el registro de la consola como se muestra a continuación:

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

Ahora, Tomcat se inició en el puerto 4431 (http) como se muestra a continuación:

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

Perfil activo de primavera para application.yml

Entendamos cómo mantener el perfil activo de Spring para application.yml. Podemos mantener las propiedades del perfil activo de Spring en el únicoapplication.ymlarchivo. No es necesario utilizar un archivo separado como application.properties.

El siguiente es un código de ejemplo para mantener los perfiles activos de Spring en el archivo application.yml. Tenga en cuenta que el delimitador (---) se utiliza para separar cada perfil en el archivo 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

El comando para establecer el perfil activo de desarrollo se da a continuación:

Puede ver el nombre del perfil activo en el registro de la consola como se muestra a continuación:

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

Ahora, Tomcat se inició en el puerto 9090 (http) como se muestra a continuación:

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

El comando para configurar el perfil activo de producción se da a continuación:

Puede ver el nombre del perfil activo en el registro de la consola como se muestra a continuación:

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

Esto iniciará Tomcat en el puerto 4431 (http) como se muestra a continuación:

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