O objetivo do design da linguagem YAML (pronunciado / ˈjæməl /) é facilitar a leitura e a escrita humana. É essencialmente um formato de serialização de dados universal. Suas regras gramaticais básicas são as seguintes
- Maiúsculas e Minúsculas
- Use recuo para indicar relações hierárquicas
- A tecla Tab não é permitida ao recuar, apenas espaços são permitidos.
- O número de espaços recuados não é importante, desde que os elementos do mesmo nível estejam alinhados à esquerda
- # Indica um comentário, deste caractere até o final da linha, que será ignorado pelo analisador.
Existem três estruturas de dados com suporte por YAML. Este artigo irá introduzir o uso de três estruturas de dados no Spring Boot
- Objeto: uma coleção de pares de valores-chave, também conhecido como mapeamento / hashes / dicionário
- Matriz: um conjunto de valores organizados em ordem, também conhecido como sequência / lista
- Escalares: um valor único e indivisível
Primeiro, usamos um único valor indivisível e valores de tipo List e Map separados como exemplos. A seguir está o código para o objeto Java:
@Configuration
@ConfigurationProperties(prefix = "microservice.baseyaml")
public class BaseYamlConfig {
private String strVaule;
private int intValue;
private float floatValue;
private boolean booleanValue;
private List<String> listStrValue;
private Map<String, String> mapStrValue;
//getter setter方法省略
}
Precisamos configurar as propriedades do objeto Java acima em application.yaml, um exemplo é o seguinte:
microservice:
baseyaml:
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
A partir da configuração acima, podemos ver que geralmente um único valor é configurado usando a forma de campo: valor, enquanto o valor do tipo Lista é configurado usando vários valores, e o valor do tipo Mapa é configurado usando o campo: chave: Se o valor for configurado, vários key: values podem ser configurados. A configuração acima é a configuração yaml mais simples e básica. A seguir entendemos a configuração complexa, ou seja, o tipo de objeto é armazenado na configuração, ou os objetos são armazenados em Lista e Mapa. A seguir está o código Java:
@Configuration
@ConfigurationProperties(prefix = "microservice.objectyaml")
public class ObjectYamlConfig {
private ConfigPojo configPojo;
private List<ConfigPojo> list;
private Map<String,ConfigPojo> map;
//getter settter方法省略
}
public class ConfigPojo {
private String strVaule;
private int intValue;
private float floatValue;
private boolean booleanValue;
private List<String> listStrValue;
private Map<String, String> mapStrValue;
//getter settter方法省略
}
Então, a configuração do yaml do código acima é a seguinte. Na verdade, a configuração é relativamente simples. A regra é que Lista usa-separação e Mapa usa chave: tipo de valor. A configuração é a seguinte:
microservice:
objectyaml:
configPojo:
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
list:
-
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
-
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
map:
a:
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
b:
strVaule: strVaule
intValue: 10
floatValue: 8.5
booleanValue: false
listStrValue:
-a
-b
-c
-d
mapStrValue:
name: pharos
age: 25
Relativamente falando, a configuração yaml é mais clara do que a configuração application.properties. Pode-se ver a que tipo de campos de configuração pertencem. Existem menos configurações complexas no Spring Boot, mas existem muitas configurações que correspondem ao tipo de objeto no Spring Cloud. Entender o uso da configuração do yaml ajuda a entender a análise da configuração no SpringBoot ou Spring Cloud.