Red de conocimiento informático - Problemas con los teléfonos móviles - Análisis y práctica del principio inicial de Springboot

Análisis y práctica del principio inicial de Springboot

El iniciador es una parte importante de springBoot. Los lanzadores nos permiten introducir rápidamente una función sin requerir configuración adicional. El iniciador también me proporciona opciones de configuración personalizadas reservadas, que podemos personalizar simplemente configurando los parámetros relevantes en application.properties.

Entonces, ¿cómo se logran estas comodidades? Al comprender cómo funciona, también podemos crear nuestros propios lanzadores para permitir que otros utilicen rápidamente nuestras funciones.

Según mi conocimiento personal, considero SpringBoot Starter como una clase de configuración inteligente @Configuration.

La siguiente introducción incluye:

1. Crear un módulo Primero, personalizamos un módulo inicial e introducimos componentes Spring relevantes de acuerdo con la complejidad de su implementación inicial. Lo más básico, solo necesitamos introducir el módulo spring-boot-autoconfigure.

2. Implemente nuestro business bean. En este ejemplo, implementamos el servicio sayHello más simple. Ingrese msg y devuelva "hola, {msg}".

3. Luego cree la clase de Configuración. Esta clase es la clase principal para la inicialización automática del iniciador y es responsable de cargar de forma inteligente los beans relacionados con el negocio.

4. Configure spring.factories para permitir que springboot cargue automáticamente nuestra clase de Configuración. Profundizaremos en esto más adelante.

Específicamente, cree un nuevo archivo spring.factories en el directorio resources/META-INF del módulo. Su contenido es el siguiente:

Finalmente, ejecutamos la siguiente instalación o implementación en cada uno de los módulos anteriores y el iniciador estará listo.

Usar nuestro lanzador en otros proyectos es muy simple: (1) introducir las dependencias del lanzador; (2) inyectar los servicios requeridos.

¡Listo!

Volviendo al proceso de desarrollo anterior, hay dos cosas que debemos saber:

(1) Cómo hacer que el iniciador se reconozca y se cargue automáticamente: el principio EnableAutoConfiguration en spring.factor .

(2) Cómo hacer que la carga automática sea inteligente y configurable: anotación @Configuration en la clase de configuración.

Aquí, solo presentamos brevemente los principios y procesos generales, y puede leer los detalles de implementación basados ​​en las ideas dadas en el artículo.

La anotación @SpringBootApplication se agrega a la clase de inicio SpringBoot. Esta anotación presenta la anotación @EnableAutoConfiguration de forma predeterminada. Luego @EnableAutoConfiguration @Import(AutoConfigurationImportSelector.class).

El método selectImports de AutoConfigurationImportSelector.class eventualmente cargará el método EnableAutoConfiguration en META-INF/spring.factories con el valor de configuración EnableAutoConfiguration a través de SpringFactoriesLoader.loadFactoryNames. fábricas, ese es el archivo de recursos que configuramos anteriormente.

En la práctica, no siempre queremos utilizar la configuración predeterminada. A veces quiero configurar la funcionalidad yo mismo, a veces quiero cambiar los parámetros de servicio predeterminados.

El iniciador tiene en cuenta estas situaciones comunes y proporciona las siguientes soluciones:

El iniciador springboot proporciona una serie de anotaciones @Conditional* para indicar cuándo está habilitada la configuración correspondiente. Estas anotaciones se pueden encontrar en el archivo oficial de springboot. aparece la documentación.

Por ejemplo, en nuestro caso, usamos "@ConditionalOnClass(DemoHelloService.class)", lo que significa que la clase de configuración solo tendrá efecto si la clase DemoHelloService existe o usamos "@ConditionalOnMissingBean (DemoHelloService. class)", lo que significa que la clase de configuración solo tendrá efecto si existe la clase DemoHelloService. class)", lo que indica que si no hay un Bean de tipo DemoHelloService en el proyecto, la clase de configuración creará automáticamente un Bean de tipo DemoHelloService de forma predeterminada para el inicio.

Esta anotación se utiliza principalmente para resolver el problema. siguiente situación: Quiero usar la clase de configuración predeterminada de inicio, pero quiero personalizar algunos parámetros en la configuración. La clase @ConfigurationProperties puede hacer esto. Por ejemplo, en el ejemplo anterior, quiero personalizar el mensaje predeterminado. Los pasos específicos son los siguientes:

Iniciar un nuevo Bean de clase ConfigurationProperties

Habilitar propiedades

Personalizar el mensaje predeterminado en el proyecto real