Tres métodos de enlace de configuración en SpringBoot (anotación @ConfigurationProperties)

El archivo de configuración de propiedades es el siguiente:

human.name=Mr.Yu
human.age=21
human.gender=male

Cómo vincular la configuración en propiedades a JavaBean, nuestro enfoque anterior es el siguiente:

public class PropertiesUtil {
    
    
    public static void getProperties(Person person) throws IOException {
    
    
        Properties properties = new Properties();
        properties.load(new FileInputStream("src/main/resources/demo.properties"));
        //得到配置文件key的名字
        Enumeration enumeration = properties.propertyNames();
        while (enumeration.hasMoreElements()){
    
    
            String key =(String)enumeration.nextElement();
            String value = properties.getProperty(key);
            System.out.println("key="+key+"——————value="+value);
            //封装到JavaBean
            //以下内容省略
        }
    }
}

Resultado de salida:

key=human.name——————value=Mr.Yu
key=human.age——————value=21
key=human.gender——————value=male

Process finished with exit code 0

Puede ver que este proceso es muy complicado, pero este proceso se volverá muy simple en SpringBoot.
Hay tres métodos en SpringBoot:

1.Anotación @ ConfigurationProperties + anotación @Component (o @Controller o @Service o @Repository)

  • Solo los componentes en el contenedor tendrán las poderosas funciones proporcionadas por SpringBoot, es decir, si necesitamos usar la anotación @ConfigurationProperties, primero debemos asegurarnos de que el par de objetos JavaBean estén en el contenedor IoC, por lo que necesitamos usar la anotación Component para agregar componentes Al contenedor.
  • En la anotación @ConfigurationProperties, el prefijo y el valor son alias entre sí
    Inserte la descripción de la imagen aquí
  • Eso es @ConfigurationProperties(value = "human")lo @ConfigurationProperties(prefix = "human")mismo
  • prefijo y valor se refieren al significado del prefijo

Prueba de código:
archivo de configuración de propiedades:

human.name=Mr.Yu
human.age=21
human.gender=male

Clase de persona:

@Component 只有在容器中的组件,才会拥有SpringBoot提供的强大功能
@ConfigurationProperties(value = "human")
public class Person {
    
    
    public String name;
    public int age;
    public String gender;

    public Person() {
    
    
    }

    public Person(String name, int age, String gender) {
    
    
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getGender() {
    
    
        return gender;
    }

    public void setGender(String gender) {
    
    
        this.gender = gender;
    }

    @Override
    public String toString() {
    
    
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

Las clases de prueba son las siguientes:

//@Controller
@ResponseBody以字符串的方式写给浏览器,而不是跳转到某个页面
//@ResponseBody

//@RestController =  @Controller +  @ResponseBody
@RestController
public class HelloController {
    
    

    //自动注入属性
    @Autowired
    Person person;
    
    @RequestMapping("/person")
    public Person getPerson(){
    
    
        return person;
    }
    
}

Resultados de la prueba:
Inserte la descripción de la imagen aquí

2.Anotación @ ConfigurationProperties + anotación @ EnableConfigurationProperties

De esta manera, la anotación @EnableConfigurationProperties debe escribirse en la clase de configuración. @EnableConfigurationProperties significa activar la función de configuración de propiedad, cuya función de configuración de propiedad está activada, porque nuestra clase Person anterior quiere configurar el enlace, por lo que lo agregamos más adelante Parámetros Person.class:@EnableConfigurationProperties(Person.class)

La función de @EnableConfigurationProperties (Person.class) es registrar el componente Person en el contenedor. El nombre del objeto es: humano -com.ysw.boot.properties.Person donde humano es el valor del prefijo en @ConfigurationProperties (valor = "humano") Valor de

Todavía hay anotaciones @ConfigurationProperties en la clase Person. Este método reemplaza la anotación @Component en la clase Person con la anotación @EnableConfigurationProperties (Person.class) en la clase de configuración.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Este método se usa principalmente cuando se hace referencia a paquetes de terceros, como el primero Hay una clase Person en el paquete de terceros. @Component no se usa en esta clase. No podemos agregar @Component a la clase en el paquete de terceros. En este momento, podemos usar el método de agregar la anotación @EnableConfigurationProperties a la clase de configuración.

3. @ ConfigurationProperties anotación + @Import anotación

  • Use @Import para crear automáticamente este tipo de componente en el contenedor, y el nombre del componente predeterminado es el nombre completo de la clase
  • La anotación @Import tiene el mismo efecto que la anotación @ConfigurationProperties en 2
  • Es solo que tienen diferentes nombres registrados en el contenedor:
    • El nombre del objeto registrado con la anotación @ConfigurationProperties en el contenedor es: human-com.ysw.boot.properties.Person donde humano es el valor del prefijo en @ConfigurationProperties (valor = "humano")
    • El nombre del objeto registrado en el contenedor con la anotación @Import es: com.ysw.boot.properties.Person

Clase de configuración: Clase de
Inserte la descripción de la imagen aquí
persona : Clase de
Inserte la descripción de la imagen aquí
prueba:
Inserte la descripción de la imagen aquí
archivo application.properties:

server.port=8888
human.name=Mr.Yu
human.age=21
human.gender=male222

Resultados de la prueba:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/MrYushiwen/article/details/111985310
Recomendado
Clasificación