Introdução aos arquivos de configuração no Spring Boot e seu tutorial de uso

Índice

1. Introdução aos arquivos de configuração

2. Configure dados simples

3. Configure os dados do objeto

4. Configure os dados de coleta

5. Leia os dados do arquivo de configuração

6. Uso de espaços reservados


1. Introdução aos arquivos de configuração

No projeto SpringBoot, a maioria das configurações possui valores padrão, mas se desejar substituir a configuração padrão, você pode usar application.properties ou application.yml ou application.yaml para configuração. SpringBoot carrega arquivos application.properties ou application.yml do diretório de recursos por padrão. Entre eles, o arquivo application.properties é um arquivo do tipo par chave-valor, que já foi usado antes, portanto não entraremos mais em detalhes sobre o arquivo de propriedades.

Se quisermos descobrir como o arquivo de configuração substitui a configuração padrão do projeto SpringBoot, você pode verificar o seguinte link:

Documentação de referência do Spring Boot icon-default.png?t=N7T8https://docs.spring.io/spring-boot/docs/2.7.6/reference/htmlsingle/#appendix.application-properties.server  Além dos arquivos de propriedades, o SpringBoot também oferece suporte a arquivos YAML para configuração. A extensão de um arquivo YAML é .yml ou .yaml. Seus requisitos básicos são os seguintes:

  • Maiúsculas e minúsculas
  • Use recuo para representar relacionamentos hierárquicos
  • A mesma parte aparece apenas uma vez

Por exemplo, use o arquivo de propriedades para configurar a porta do Tomcat:

servidor.port=8888 

 E use o arquivo YAML para configurar a porta do Tomcat:

servidor:
        porta: 8888

2. Configure dados simples

Além de substituir a configuração padrão, também podemos configurar outras informações no arquivo YAML para uso em nosso projeto. Veja como configurar dados simples:

gramática:

Nome dos dados: valor

Exemplo: 

nome: LYL

Nota: Há um espaço antes do valor 

3. Configure os dados do objeto

gramática:

Objeto:
        nome do atributo 1: valor do atributo
        nome do atributo 2: valor do atributo
# ou
objeto: {nome do atributo 1: valor do atributo, nome do atributo 2: valor do atributo}

Exemplo:

aluno:
  idade: 10
  mulher: homem
  endereço: Guangzhou
# 学生2
​​aluno2: {sexo: homem, idade: 10, endereço: Guangzhou}

Nota: Não há limite para o número de espaços na frente do nome do atributo. Na sintaxe YML, o mesmo recuo representa o mesmo nível, desde que o número de espaços na frente de cada atributo seja o mesmo. 

4. Configure os dados de coleta

gramática:

Definir:
        - valor 1
        - valor 2
# ou
definir: [valor 1, valor 2]

Exemplo:

cidade1:
  - Pequim
  - Xangai
  - Shenzhen
  - Guangzhou

#Os elementos da coleção são objetos

alunos:
  - pontuação: 100
    nome: zhangsan
    idade: 10
  - pontuação: 95
    nome: lisi
    idade: 25
  - pontuação: 78
    nome: wangwu
    idade: 15

usuário:
  id: 1001 nome de usuário:   endereço
  LYL :     - Pequim     - Xangai     - Guangzhou     - Shenzhen   notas:     - disciplina:       pontuação em matemática: 90     - disciplina:       pontuação em inglês: 39









5. Leia os dados do arquivo de configuração

Podemos mapear o valor no arquivo de configuração para um campo de um bean gerenciado pelo Spring através da anotação @Value. O uso é o seguinte:

O arquivo yml é o seguinte:


name: zhangsan

student:
  age: 10
  female: male
  address: Guangzhou

city1:
  - Beijing
  - Shanghai
  - Shenzhen
  - Guangzhou

students:
  - score: 100
    name: zhangsan
    age: 10
  - score: 95
    name: lisi
    age: 25
  - score: 78
    name: wangwu
    age: 15

user:
  id: 1001
  username: LYL
  address:
    - Beijing
    - Shanghai
    - Guangzhou
    - Shenzhen
  grades:
    - subject: math
      score: 90
    - subject: english
      score: 39

Leia o arquivo de configuração:

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class YmlController1 {
    @Value("${name}")
    private String name;

    @Value("${students[1].name}")
    private String stu_name;

    @Value("${city1[3]}")
    private String address;

    @RequestMapping("/yml1")
    @ResponseBody
    public String yml1(){
        System.out.println(name);
        System.out.println(stu_name);
        System.out.println(address);
        return name+" "+stu_name+" "+address;
    }
}

 Em seguida, executamos para ver se conseguimos os dados:

OK, tanto o console quanto a página da web podem ler os dados com êxito.

No entanto, deve-se observar que @Value só pode mapear tipos de dados simples e não pode mapear objetos e coleções em arquivos yaml para atributos.

Então, como devemos mapear para a classe de entidade? Através de @ConfigurationProperties(prefifix="object"), a configuração no arquivo de configuração pode ser mapeada automaticamente para a entidade, de modo que as propriedades do objeto configuradas no arquivo yml possam ser mapeadas diretamente para o feijão.

OK, vamos criar uma nova classe de entidade: Grade, pois o atributo User contém este objeto:

package com.example.demo.pojo;

public class Grade {

    private String subject;
    private int score;

    public Grade(){};

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "Grade [ " +
                "subject='" + subject + '\'' +
                ", score=" + score +
                " ]";
    }
}

Em seguida, escreva uma classe de controle para ler o arquivo de configuração:

package com.example.demo.controller;

import com.example.demo.pojo.Grade;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@ConfigurationProperties(prefix = "user")
public class YmlController2 {

    private int id;
    private String username;
    private List<String> address;
    private List<Grade> grades;

    @RequestMapping("/yml2")
    public void yml2(){
        System.out.println(id);
        System.out.println(username);
        System.out.println(address);
        System.out.println(grades);
    }

    @Override
    public String toString() {
        return "YmlController2 [" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address=" + address +
                ", grades=" + grades +
                " ]";
    }

    public YmlController2() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public List<String> getAddress() {
        return address;
    }

    public void setAddress(List<String> address) {
        this.address = address;
    }

    public List<Grade> getGrades() {
        return grades;
    }

    public void setGrades(List<Grade> grades) {
        this.grades = grades;
    }
}

Ok, agora vamos executar e ver se conseguimos os dados:

OK, impresso com sucesso no console, indicando que a anotação está efetiva e pode ser usada.

6. Uso de espaços reservados

O espaço reservado ${} pode ser usado em arquivos YAML, que possui duas funções:

Use valores do arquivo de configuração

Por exemplo, usamos uma porta personalizada e a exibimos na página: o arquivo de configuração é mostrado abaixo

Vamos escrever outro método de controlador

package com.example.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class YmlController3 {
    @Value("${myConfig.serverPort}")
    private int port;

    @RequestMapping("yml3")
    @ResponseBody
    public String getPort(){
        return "你的自定义端口为:"+port;
    }
}

Execute testes

Também pode ser injetado com sucesso. 

Use os métodos fornecidos pela estrutura

A estrutura SpringBoot fornece alguns métodos para gerar números aleatórios que podem ser usados ​​em arquivos yml:

  • ${random.value}: Gere um número aleatório semelhante ao uuid, sem conexão "-"
  • ${random.uuid}: Gere um uuid, conectado por um travessão
  • ${random.int}: escolha aleatoriamente um valor dentro do intervalo de números inteiros
  • ${random.int(10)}: Gere aleatoriamente um número dentro de 10
  • ${random.int(100.200)}: gera aleatoriamente um número no intervalo de 100-200
  • ${random.long}: selecione aleatoriamente um valor dentro do intervalo de números inteiros longos
  • ${random.long(100.200)}: gera aleatoriamente um valor inteiro longo no intervalo de 100-200

Por exemplo, gere aleatoriamente uma porta 1000-9999:

Acho que você gosta

Origin blog.csdn.net/qq_53317005/article/details/133416916
Recomendado
Clasificación