Red de conocimiento del abogados - Ley de patentes - Principio de montaje automático por resorte

Principio de montaje automático por resorte

Entre ellos, depende principalmente de un proyecto principal y gestiona principalmente el filtrado de recursos y los complementos del proyecto.

Haga clic y descubra que hay otra dependencia principal.

Este es el lugar donde realmente se administran todas las versiones dependientes en las aplicaciones SpringBoot, el centro de control de versiones de SpringBoot;

En el futuro, cuando importemos dependencias, no necesitaremos escribir versiones de forma predeterminada, pero si el paquete importado no se administra en dependencias, necesitaremos configurar manualmente la versión

springboot-boot-; starter-xxx: este es el escenario de spring-boot Starter

SpringBoot extrae todos los escenarios funcionales y los convierte en iniciadores. Solo necesita introducir estos iniciadores en el proyecto y se importarán todas las dependencias relacionadas. Simplemente importamos qué tipo de iniciador de escena desea usar; también podemos personalizar el iniciador en el futuro

La clase de inicio principal predeterminada

Pero una clase de inicio simple no; ¡simple! Analicemos qué hacen estas anotaciones

@SpringBootApplication

Función: la anotación en una determinada clase indica que esta clase es la clase de configuración principal de SpringBoot, y SpringBoot debería ejecutar esta clase El método principal para iniciar la aplicación SpringBoot

Ingrese esta anotación: ¡puede ver que hay muchas otras anotaciones arriba!

@ComponentScan

Esta anotación es muy importante en Spring, corresponde a los elementos en la configuración XML.

Función: escanea y carga automáticamente componentes o beans calificados, y carga esta definición de bean en el contenedor IOC

@SpringBootConfiguration

Función: Clase de configuración SpringBoot, marcada en una determinada clase, indica que esta es una clase de configuración SpringBoot

Continuemos revisando esta anotación

La @Configuration aquí indica que esta es una clase de configuración. es el archivo de configuración xml correspondiente a Spring;

¡El @Component que contiene significa que la clase de inicio en sí es solo un componente en Spring, responsable de iniciar la aplicación!

Volvamos a la anotación SpringBootApplication y sigamos buscando.

@EnableAutoConfiguration: activa la función de configuración automática

En el pasado, necesitábamos configurar las cosas nosotros mismos, pero ahora SpringBoot puede configurarlas automáticamente por nosotros; @EnableAutoConfiguration le dice a SpringBoot que las active; en la función de configuración automática, para que pueda configurarse automáticamente para que surta efecto.

Haga clic en la anotación para continuar viendo:

@AutoConfigurationPackage: paquete de configuración automática

<; p> @import: anotación subyacente de Spring @import, importa uno al contenedor Componentes

Registrar.class Función: escanea todos los componentes en el paquete donde se encuentra la clase de inicio principal y todos los subpaquetes bajo el paquete en el contenedor Spring

Después de este análisis, regrese al paso anterior Continúe leyendo

@Import({AutoConfigurationImportSelector.class}): Importe componentes al contenedor

p>

AutoConfigurationImportSelector: configura automáticamente el selector de importación, entonces, ¿qué selectores de componentes importará? Hagamos clic para ir a esta clase y ver el código fuente:

1. Hay un método como este en esta clase:

2. Este método llama al método estático de SpringFactoriesLoader ¡clase! Ingresamos al método loadFactoryNames() de la clase SpringFactoriesLoader

3. Seguimos haciendo clic para ver el método loadSpringFactories

4. Encontramos un archivo que aparece varias veces: spring.factories y búsquelo globalmente

spring.factories

Abrimos spring.factories según la fuente y vimos muchos archivos configurados automáticamente. ¡Esta es la raíz de la configuración automática!

Puedes ver que cada una de estas son clases de configuración de JavaConfig y se les inyectan algunos beans. ¡Puedes encontrar algunas clases que conoces y familiarizarte con ellas!

Por lo tanto, la implementación real de la configuración automática es buscar todos los archivos de configuración META-INF/spring.factories en el classpath y configurar los elementos de configuración correspondientes en el paquete org.springframework.boot.autoconfigure. a través de Reflection crea una instancia de la clase de configuración del contenedor IOC en forma de JavaConfig correspondiente a la anotación @Configuration, y luego las resume en una instancia y la carga en el contenedor IOC.

Conclusión:

No es un método simple

Inicialmente pensé que estaba ejecutando un método principal, pero inesperadamente inició un servicio

; > Análisis SpringApplication.run

El análisis de este método se divide principalmente en dos partes, una es la creación de instancias de SpringApplication y la otra es la ejecución del método de ejecución

SpringApplication La clase hace principalmente las siguientes cuatro cosas:

1. Inferir si el tipo de aplicación es un proyecto normal o un proyecto web

2. Buscar y cargar todos los inicializadores disponibles y configurarlos al atributo de inicializadores

3. Encuentre todos los oyentes de aplicaciones y configúrelos en el atributo de oyentes

4. Infiera y establezca la clase de definición del método principal y encuentre la clase principal en ejecución

ejecutar análisis de proceso de método