El principio de inicio de SpringBoot

El principio de inicio de SpringBoot

Una clase de programa principal y entrada principal.

(1) Código de clase de inicio principal
Inserte la descripción de la imagen aquí
(2) Descripción
@SpringBootApplication: La anotación de la aplicación Spring Boot en una determinada clase indica que esta clase es la clase de configuración principal de SpringBoot, y SpringBoot debe ejecutar el método principal de esta clase para iniciar la aplicación SpringBoot;
Inserte la descripción de la imagen aquí

Interpretación detallada de las dos principales anotaciones iniciales

@SpringBootConfiguration: clase de configuración Spring Boot;
marcado en una clase, significa que esta es una clase de configuración Spring Boot;

@Configuration: Anote esta anotación en la clase de configuración; clase de configuración ----- archivo de configuración; la clase de configuración también es un componente en el contenedor; @Component

@EnableAutoConfiguration: Activa la función de configuración automática;
Spring Boot nos ayuda a configurar automáticamente las cosas que necesitamos configurar antes;

@EnableAutoConfiguration le dice a SpringBoot que active la función de configuración automática; para que la configuración automática pueda tener efecto;
Inserte la descripción de la imagen aquí
@AutoConfigurationPackage: paquete de configuración automática

@Import (AutoConfigurationPackages.Registrar.class) :

La anotación subyacente de Spring, @Import, importa un componente al contenedor, el componente importado lo hace AutoConfigurationPackages.Registrar.class;

Escanee todos los componentes en el paquete de la clase de configuración principal (clase marcada por @SpringBootApplication) y todos los sub-paquetes a continuación en el contenedor Spring;

@Import (EnableAutoConfigurationImportSelector.class) ;

¿Importar componentes al contenedor?

EnableAutoConfigurationImportSelector: el selector de qué componentes importar; devuelve todos los componentes que deben importarse en forma de nombres de clase completos; estos componentes se agregarán al contenedor; muchas clases de configuración automática (xxxAutoConfiguration) se importarán al contenedor; Importar todos los componentes necesarios para este escenario en el contenedor, y configurar estos componentes;
Inserte la descripción de la imagen aquí
con la clase de configuración automática, podemos evitar el trabajo de escribir manualmente componentes funcionales de inyección de configuración, etc .;

SpringFactoriesLoader.loadFactoryNames (EnableAutoConfiguration.class, classLoader) ;

Cuando Spring Boot se inicia, obtiene los valores especificados por EnableAutoConfiguration de META-INF / spring.factories en la ruta de clase, e importa estos valores en el contenedor como la clase de configuración automática. La clase de configuración automática entrará en vigor y ayúdanos con el trabajo de autoconfiguración; antes de que necesitemos configurar las cosas por nosotros mismos, la clase de configuración automática nos ayudará;

Tres resumen

SpringBoot es un marco que sirve al
marco.El alcance del servicio es simplificar el archivo de configuración (1) @SpringBootApplication se compone de tres anotaciones @SpringBootConfiguration, @EnableAutoConfiguration y @ComponentScan.
(2) @SpringBootConfiguration: el código fuente interno proporciona @Configuration, que es la clase de configuración del contenedor IOC.
(3) @EnableAutoConfiguration: usa internamente SpringFactoriesLoader para buscar todos los archivos META-INF / spring.fatories de la ruta de clase, y add Key [org. springframework.boot.autoconfigure.EnableAutoConfiguration] El elemento de configuración de valor correspondiente se instancia en la clase de configuración de contenedor de IoC correspondiente en la forma de JavaConfig marcado con @Configuration por reflexión, y luego se resume en el contenedor de IoC utilizado actualmente.
(4) @CompenentScan: No es necesario, su función es escanear y cargar automáticamente componentes o definiciones de bean, y cargarlos en el contenedor.

Supongo que te gusta

Origin blog.csdn.net/hcyxsh/article/details/114605196
Recomendado
Clasificación