Introducción a los archivos de configuración en Spring Boot y su tutorial de uso.

Tabla de contenido

1. Introducción a los archivos de configuración.

2. Configurar datos simples

3. Configurar los datos del objeto

4. Configurar los datos de la colección

5. Leer los datos del archivo de configuración.

6. Uso de marcadores de posición


1. Introducción a los archivos de configuración.

En el proyecto SpringBoot, la mayoría de las configuraciones tienen valores predeterminados, pero si desea reemplazar la configuración predeterminada, puede usar application.properties o application.yml o application.yaml para la configuración. SpringBoot carga archivos application.properties o application.yml desde el directorio de recursos de forma predeterminada. Entre ellos, el archivo application.properties es un archivo de tipo par clave-valor, que se ha utilizado antes, por lo que no daremos más detalles sobre el archivo de propiedades.

Si queremos saber cómo el archivo de configuración anula la configuración predeterminada del proyecto SpringBoot, puede consultar el siguiente enlace:

Documentación de referencia de Spring Boot icono-default.png?t=N7T8https://docs.spring.io/spring-boot/docs/2.7.6/reference/htmlsingle/#appendix.application-properties.server  Además de los archivos de propiedades, SpringBoot también admite archivos YAML para la configuración. La extensión de un archivo YAML es .yml o .yaml y sus requisitos básicos son los siguientes:

  • Distingue mayúsculas y minúsculas
  • Utilice sangría para representar relaciones jerárquicas.
  • La misma parte aparece solo una vez.

Por ejemplo, utilice el archivo de propiedades para configurar el puerto Tomcat:

servidor.puerto=8888 

 Y use el archivo YAML para configurar el puerto Tomcat:

servidor:
        puerto: 8888

2. Configurar datos simples

Además de anular la configuración predeterminada, también podemos configurar otra información en el archivo YAML para usar en nuestro proyecto. A continuación se explica cómo configurar datos simples:

gramática:

Nombre de datos: valor

Ejemplo: 

nombre: LYL

Nota: hay un espacio antes del valor. 

3. Configurar los datos del objeto

gramática:

Objeto:
        nombre de atributo 1: valor de atributo
        nombre de atributo 2: valor de atributo
# u
objeto: {nombre de atributo 1: valor de atributo, nombre de atributo 2: valor de atributo}

Ejemplo:

estudiante:
  edad: 10
  mujeres: hombre
  dirección: Guangzhou
# 学生2
​​estudiante2: {sexo: hombre, edad: 10, dirección: Guangzhou}

Nota: No hay límite para la cantidad de espacios delante del nombre del atributo. En la sintaxis YML, la misma sangría representa el mismo nivel, siempre que la cantidad de espacios delante de cada atributo sea la misma. 

4. Configurar los datos de la colección

gramática:

Establecer:
        - valor 1
        - valor 2
# o
establecer: [valor 1, valor 2]

Ejemplo:

ciudad1:
  - Beijing
  - Shanghai
  - Shenzhen
  - Guangzhou

#Los elementos de la colección son objetos.

estudiantes:
  - puntuación: 100
    nombre: zhangsan
    edad: 10
  - puntuación: 95
    nombre: lisi
    edad: 25
  - puntuación: 78
    nombre: wangwu
    edad: 15

usuario:
  id: 1001
  nombre de usuario: LYL
  dirección:
    - Beijing
    - Shanghai
    - Guangzhou
    - Shenzhen
  calificaciones:
    - materia:
      puntuación de matemáticas: 90
    - materia:
      puntuación de inglés: 39

5. Leer los datos del archivo de configuración.

Podemos asignar el valor en el archivo de configuración a un campo de un bean administrado por Spring a través de la anotación @Value. El uso es el siguiente:

El archivo yml es el siguiente:


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

Lea el archivo de configuración:

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;
    }
}

 A continuación lo ejecutamos para ver si podemos obtener los datos:

Bien, tanto la consola como la página web pueden leer datos correctamente.

Sin embargo, cabe señalar que @Value solo puede asignar tipos de datos simples y no puede asignar objetos y colecciones en archivos yaml a atributos.

Entonces, ¿cómo debemos asignar a la clase de entidad? A través de @ConfigurationProperties (prefifix = "objeto"), la configuración en el archivo de configuración se puede asignar automáticamente a la entidad, de modo que las propiedades del objeto configuradas en el archivo yml se pueden asignar directamente a el frijol.

Bien, creemos una nueva clase de entidad: Calificación, porque el atributo Usuario contiene 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 +
                " ]";
    }
}

Luego escriba una clase de control para leer el archivo de configuración:

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;
    }
}

Bien, ahora ejecutemos y veamos si podemos obtener los datos:

OK, impreso correctamente en la consola, lo que indica que la anotación es efectiva y se puede utilizar.

6. Uso de marcadores de posición

El marcador de posición ${} se puede utilizar en archivos YAML y tiene dos funciones:

Usar valores del archivo de configuración

Por ejemplo, usamos un puerto personalizado y lo mostramos en la página: el archivo de configuración se muestra a continuación

Escribamos otro 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;
    }
}

Ejecutar pruebas

También se puede inyectar con éxito. 

Utilice los métodos proporcionados por el marco.

El marco SpringBoot proporciona algunos métodos para generar números aleatorios que se pueden usar en archivos yml:

  • ${random.value}: Genera un número aleatorio similar a uuid, sin conexión "-"
  • ${random.uuid}: Genera un uuid, conectado por un guión
  • ${random.int}: elige aleatoriamente un valor dentro del rango de números enteros
  • ${random.int(10)}: genera aleatoriamente un número dentro de 10
  • ${random.int(100,200)}: genera aleatoriamente un número dentro del rango de 100-200
  • ${random.long}: selecciona aleatoriamente un valor dentro del rango de enteros largos
  • ${random.long(100,200)}: genera aleatoriamente un valor entero largo en el rango de 100-200

Por ejemplo, genere aleatoriamente un puerto 1000-9999:

Supongo que te gusta

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