Configuración automática de SpringBoot: personalice un Statuser de arranque

Crea un iniciador personalizado:

La aparición de Springboot simplifica enormemente la configuración de los desarrolladores, y una de las grandes herramientas es el iniciador de springboot, que es el componente central de springboot. El springboot oficial también encapsula varias comodidades para los desarrolladores. El módulo de inicio utilizado, por ejemplo:

  • spring-boot-starter-web // primavera MVC 相关
  • spring-boot-starter-aop // Aspectos relacionados con la programación
  • spring-boot-starter-cache // Relacionado con la caché

(1) Requisitos de inicio personalizados: el
sitio web oficial requiere la creación de dos módulos, uno es un módulo de configuración automática y el otro es un módulo de inicio. El módulo de inicio depende del módulo de configuración automática, que sirve principalmente como una dependencia transitiva (se puede omitir ).

(2) Convención de nomenclatura: el
iniciador oficial spring-boot-starter-xxxse nombra en el formato y el iniciador personalizado por desarrolladores externos xxxx-spring-boot-starterse nombra en la regla.

1 Cree un módulo de configuración automática

Primero cree un proyecto vacío y luego cree un SpringBootmódulo, elimine la clase de inicio y la clase de prueba en esta clase.
Inserte la descripción de la imagen aquí

(1) Configuración de Pom

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

Solo estas dos dependencias se mantienen en el archivo pom, entre las cuales se spring-boot-starterencuentran las dependencias básicas del lanzador, que spring-boot-configuration-processorse pueden solicitar al configurar el archivo:
Inserte la descripción de la imagen aquí

(2) Escribir configuración

package com.glp.properties;
import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "diy.hello")
public class Properties {
    
    
    private String pre;
    private String suf;

    public String getPre() {
    
    
        return pre;
    }

    public void setPre(String pre) {
    
    
        this.pre = pre;
    }

    public String getSuf() {
    
    
        return suf;
    }

    public void setSuf(String suf) {
    
    
        this.suf = suf;
    }
}

@ConfigurationProperties: Esta clase de configuración está application.properties/application.yamlasociada con el archivo de configuración en SpringBoot para la inyección de propiedades.

(3) Servicio de redacción

package com.glp.service;

import com.glp.properties.Properties;

public class HelloService {
    
    

    Properties properties;

    public Properties getProperties() {
    
    
        return properties;
    }

    public void setProperties(Properties properties) {
    
    
        this.properties = properties;
    }
    public String sayHello(){
    
    
        return properties.getPre()+"offer"+properties.getSuf();
    }
}

(4) Configuración automática
Una integración del servicio y la clase de configuración en la clase de configuración automática es equivalente a pasar la clase configurada a la clase de servicio.

package com.glp.config;

import com.glp.properties.Properties;
import com.glp.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@ConditionalOnWebApplication
@EnableConfigurationProperties(Properties.class)
public class HelloServiceAutoConfiguration {
    
    
    @Autowired
    Properties properties;

    @Bean
    public HelloService getHelloService(){
    
    
        HelloService service = new HelloService();
        service.setProperties(properties);
        return service;
    }
}
  • @ConditionalOnXXXX: Se utiliza para determinar si se cumplen determinadas condiciones y para determinar si la configuración automática entra en vigor
  • @Bean: Integre servicios y clases de configuración, configúrelos en componentes e inyéctelos en el contenedor para que los usuarios los llamen.
  • @EnableConfigurationProperties : Deje que xxxProperties surta efecto y agréguelo al contenedor

(5) fábricas de primavera

Escriba su propio META-INFarchivo Cuando el proyecto comience a escanear el paquete, la clase de configuración especificada en el archivo spring.factories se cargará automáticamente.

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.glp.config.HelloServiceAutoConfiguration

2 Cree un módulo de estado de inicio

Este módulo solo se usa para dependencias transitivas, por lo Mavenque nos basta con crear un nuevo módulo.
Inserte la descripción de la imagen aquí

Solo falta introducir nuestra costumbre en el pom autoconfigure, juega un papel dependiente. Por supuesto que si no quieresCódigo de configuración automático y gestión de dependencias Por separado, también puede utilizar un solo módulo.

    <dependencies>
        <dependency>
            <groupId>com.glp</groupId>
            <artifactId>diy-spring-boot-autoconfiguration</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

Nota: Para
introducir la clase de configuración automática, simplemente copie el groupId, artifactId y la versión de la clase de configuración automática pom.xml.
Inserte la descripción de la imagen aquí

3 Instale el módulo de configuración automática y el módulo de inicio en el almacén de Maven

Inserte la descripción de la imagen aquí

4 clases de prueba de escritura

Creemos una nueva SpringBootclase de prueba de módulo y simplemente introduzcamos el módulo web en la clase de prueba, sin introducir demasiado.
Inserte la descripción de la imagen aquí

(1) Introduzca la dependencia en la clase de prueba:

     <dependency>
            <groupId>com.glp</groupId>
            <artifactId>diy-spring-boot-stater</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

(2) Configuración de Applicantrion.properties

diy.hello.pre=where
diy.hello.suf=offer

(3) Escriba un controlador:

package com.glp.controller;


import com.glp.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    
    
    @Autowired
    HelloService helloService;

    @GetMapping("/say")
    public String helloController(){
    
    
        return helloService.sayHello();
    }
}

(4) Resultados de la operación

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/glpghz/article/details/108427941
Recomendado
Clasificación