¿Cómo definir un mapa en YAML para un POJO?

Parte superior de Java

Acabo de anunciar el nuevo curso Learn Spring , centrado en los fundamentos de Spring 5 y Spring Boot 2:

>> VER EL CURSO

1. Información general

En este tutorial, veremos cómo podemos usar propiedades definidas en un archivo YAML para configurar valores para un mapa en nuestras clases POJO.

2. POJO y YAML

Las clases POJO son Objetos Java sencillos. YAML es un formato de datos estructurado legible por humanos que usa sangría para indicar anidación.

2.1. Ejemplo de mapa simple

Imaginemos que tenemos una tienda en línea y estamos creando un servicio que traduce tallas de ropa. Al principio, solo vendemos ropa en el Reino Unido. Queremos saber a qué tamaño de Reino Unido se refiere la etiqueta "S", "M", "L", etc. Creamos nuestra clase de configuración POJO:

@ConfigurationProperties(prefix = "t-shirt-size") public class TshirtSizeConfig { private Map simpleMapping; public TshirtSizeConfig(Map simpleMapping) { this.simpleMapping = simpleMapping; } //getters and setters.. } 

Observe las @ConfigurationProperties con el valor del prefijo . Definiremos nuestro mapeo bajo ese mismo valor raíz en nuestro archivo YAML, como podemos ver en la siguiente sección.

También debemos recordar habilitar las propiedades de configuración con la siguiente anotación en nuestra Application.class :

@EnableConfigurationProperties(TshirtSizeConfig.class) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

2.2. Configuración YAML

Ahora agregamos t-shirt-sizea nuestra configuración YAML.

Podemos usar la siguiente estructura en nuestro archivo application.yml :

t-shirt-size: simple-mapping: XS: 6 S: 8 M: 10 L: 12 XL: 14

Observe la sangría y los espacios. YAML usa sangría para indicar anidamiento. La sintaxis recomendada es de dos espacios para cada nivel anidado.

Observe cómo lo estamos usando simple-mappingcon el guión, pero se llama el nombre de nuestra propiedad en nuestra clase simpleMapping. Las propiedades YAML con guiones se traducirán automáticamente al equivalente en código de camel-case.

2.3. Ejemplo de mapa más complejo

Después de nuestras exitosas tiendas en el Reino Unido, ahora debemos considerar traducir los tamaños a las medidas de otros países. Por ejemplo, ahora queremos saber qué tamaño tiene la etiqueta "S" en Francia y Estados Unidos. Necesitamos agregar otra capa de datos a nuestra configuración.

Podemos alterar nuestro application.yml con un mapeo más complejo:

t-shirt-size: complex-mapping: XS: uk: 6 fr: 34 us: 2 S: uk: 8 fr: 36 us: 4 M: uk: 10 fr: 38 us: 6 L: uk: 12 fr: 40 us: 8 XL: uk: 14 fr: 42 us: 10 

El campo correspondiente en nuestro POJO será un mapa de mapas:

private Map
    
      complexMapping;
    

3. Conclusión

En este artículo, vimos cómo podríamos definir mapas anidados simples y más complejos en un archivo de configuración YAML para un POJO simple.

El código de este artículo está disponible en GitHub.

Fondo de Java

Acabo de anunciar el nuevo curso Learn Spring , centrado en los fundamentos de Spring 5 y Spring Boot 2:

>> VER EL CURSO