Conocimientos básicos de Springboot

Ya sea Spring Cloud Alibaba o Spring Cloud Netflix,
Se basa en el micro marco de springboot, así que espero pasar un
Hable acerca de springboot

¿Qué es springboot?

Para el marco de resorte, tenemos más contacto con mvc de resorte,
Y la primavera. El núcleo de la primavera se encuentra en IOC (inversión de control) y DI
(Inyección de dependencia). Y estos marcos requerirán mucha configuración durante el uso
XML, o necesita hacer mucha configuración tediosa.
El marco springboot es para ayudar al desarrollo usando el marco spring
Construya rápida y eficientemente un marco dinámico y una ecología primaveral
Solución de aplicación del sistema. Está bajo el concepto de "la convención es mejor que la configuración"
Una mejor práctica Por lo tanto, es un marco que sirve al marco, que sirve
El alcance es simplificar el archivo de configuración. 

 

La convención es mejor que la configuración

La manifestación de que la convención es mejor que la configuración es principalmente
1. La estructura del directorio maven
a) La carpeta de recursos almacena los archivos de configuración por defecto
b) El método de empaquetado predeterminado es jar2. spring-boot-starter-web contiene spring mvc por defecto
La dependencia y el contenedor Tomcat incorporado permiten construir una aplicación web
Más simple
3. El archivo application.properties/yml se proporciona de forma predeterminada.
4. De manera predeterminada, el entorno de tiempo de ejecución está determinado por la propiedad spring.profiles.active
Archivo de configuración leído
5. Habilitar AutoConfiguration por defecto para arrancadores dependientes
Carga automática
 
Comience con las anotaciones de SpringBootApplication
Para descubrir el misterio del springboot, ingresamos directamente desde Annotation
Mano, mira dentro de @SpringBootApplication, ¿qué se hace?
Abra la anotación SpringBootApplication, puede ver que en realidad es
Es una anotación compuesta
@Target (ElementType.TYPE)
@Retention (RetentionPolicy.RUNTIME)
@Documentado
@Heredado
@ SpringBootConfiguration-en realidad es
@Configuración
@EnableAutoConfiguration
@ComponentScan (excludeFilters = {@Filter (type =
FilterType.CUSTOM, classes =
TypeExcludeFilter.class),
@Filter (tipo =
FilterType.CUSTOM,
clases =
AutoConfigurationExcludeFilter.clas
s)})
public @interface
SpringBootApplication { 
SpringBootApplication se compone esencialmente de 3 anotaciones, que son
1. @Configuration
2. @EnableAutoConfiguration
3. @ComponentScan
Podemos usar estas tres anotaciones directamente o iniciar la aplicación springboot,
Es solo que es más complicado configurar tres anotaciones a la vez, así que use una anotación compuesta directamente
La solución es más conveniente.
Luego observe cuidadosamente las tres anotaciones, excepto EnableAutoConfiguration
Puede ser un poco extraño, y las otras dos anotaciones se usan mucho
Análisis simple @Configuration
La anotación de configuración debería ser útil para todos. Es una anotación utilizada por la clase de configuración basada en el contenedor Spring IOC en forma de JavaConfig Porque
Para SpringBoot es esencialmente una aplicación de primavera, así que a través de esto
Una anotación para cargar la configuración del contenedor IOC es normal. Entonces en la clase de inicio
Está marcado con @Configuration, lo que significa que en realidad es un IoC
La clase de configuración del contenedor.
Las aplicaciones tradicionales de primavera se basan en xml para configurar beans
Dependencias Luego, a través del contenedor de resorte al inicio, ponga el frijol
Inicialice y, si hay una relación de dependencia entre beans, analice esto
Algunos beans que ya están en el contenedor de IoC se ensamblan según las dependencias.
Hasta Java5, se introdujo la característica de Anotaciones, el cuadro Spring
El estante también siguió la corriente principal y lanzó un elemento de Anotación y código basado en Java
Dependencia del método de descripción de enlace de información. Eso es JavaConfig.
Desde spring3, spring ha admitido dos tipos de configuración de bean,
Uno está basado en un archivo xml, el otro es JavaConfig
Cualquier definición de clase Java marcada con @Configuration es un
Clase de configuración JavaConfig. En esta clase de configuración, cualquier
Método @Bean, su valor de retorno se registrará como definición de Bean para
Contenedor IOC de Spring, el nombre del método se convierte en el id de este bean por defecto
 
Análisis simple de ComponentScan
La anotación ComponentScan es la más tocada por todos, bastante
<Contexto: escaneo de componentes> en el archivo de configuración xml. Su función principal es escanear la clase que necesita ser ensamblada bajo la ruta especificada, ya que
Se ensambla en el contenedor Ioc de primavera.
La forma de identificar la clase a ensamblar es principalmente: @Component,
Clases marcadas por anotaciones como @Repository, @Service, @Controller.
ComponentScan escaneará todos los complementos del paquete actual de forma predeterminada
La clase marcada por la anotación relevante se coloca en el contenedor IoC; 
 
Análisis simple de EnableAutoConfiguration
No ponemos EnableAutoConfiguration al final con el fin de hablar
Significa que es algo nuevo, pero significa arrancar
Significativo
Habilitar no es nuevo
Todavía en la versión spring3.1, proporciona una serie de @Enable open
Comentario de encabezado, Habilitar host debería estar más lejos en el marco JavaConfig
La mejora del paso es que el usuario está utilizando el marco relacionado con el resorte para evitar
Establezca una gran cantidad de código para reducir la dificultad de uso.
Por ejemplo, algunas anotaciones de Habilitación comunes: EnableWebMvc, (esta nota
La solución presenta todo el marco MVC que necesita usar en aplicaciones Spring
frijol);
Por ejemplo, @EnableScheduling, habilite el soporte de tareas programadas; encuentre EnableAutoConfiguration, podemos ver todos los involucrados
La anotación al comienzo de Enable estará acompañada de una anotación @Import.
@Import (AutoConfigurationImportSele
ctor.class)
public @interface
EnableAutoConfiguration { 
 
Importar anotaciones
¿Qué significa la anotación de importación? Piensa en un formulario xml
Una anotación en forma de <import resource /> comprenderá su propósito.
Importar es combinar múltiples configuraciones de contenedor dividido en una configuración. En
El significado expresado en JavaConfig es el mismo.
 
Análisis en profundidad de EnableAutoConfiguration
El papel principal de EnableAutoConfiguration es en realidad ayudar
La aplicación springboot configura todas las configuraciones de @Configuration elegibles
Todos se cargan en el contenedor de IoC creado y utilizado por el SpringBoot actual.
Volviendo a la nota de EnableAutoConfiguration, encontramos
Su importación es así
@Import (AutoConfigurationImportSele
ctor.class) public @interface
EnableAutoConfiguration {
¿Qué es AutoConfigurationImportSelector?
La anotación Habilitar no solo puede ser tan simple como el ejemplo anterior
Ahora la integración de múltiples configuraciones también puede lograr algunos campos complejos
King, por ejemplo, puede activar diferentes tipos de beans según el contexto,
La anotación @Import se puede configurar con tres clases diferentes
1. El primero es el que se demostró previamente, basado en frijoles comunes o con
@ Bean de configuración para
2. Implemente la interfaz ImportSelector para inyección dinámica.
3. Implemente la interfaz ImportBeanDefinitionRegistrar para inyección dinámica
 
Principio de implementación de la anotación @EnableAutoConfiguration
Aprendí sobre ImportSelector e ImportBeanDefinitionRegistrar
Después de eso, es más fácil entender EnableAutoConfiguration
Importará la clase de configuración del bean proporcionado por el tercero a través de la importación:
AutoConfigurationImportSelector
@Import (AutoConfigurationImportSele
ctor.class) Por el nombre, podemos suponer que se basa en ImportSelector
Basado en la función dinámica de carga de beans. Hablamos de Springboot antes
El principio de funcionamiento de la interfaz @ Enable * annotation ImportSelector
La matriz devuelta por selectImports (el nombre completo de la clase) se incluirá en
Contenedor de primavera.
Entonces puede adivinar que el principio de implementación aquí también debe ser el mismo, ubique
AutoConfigurationImportSelector en esta clase
método selectImports
Esencialmente, de hecho, EnableAutoConfiguration ayudará
La aplicación springboot carga todas las configuraciones que se ajustan a @Configuration
Al contenedor actual de IoC creado por SpringBoot,
Spring Framework proporciona una clase de herramienta SpringFactoriesLoader
Apoyo. Y use anotaciones condicionales proporcionadas por Spring
@Condicional, condicione selectivamente los beans que deben cargarse
Filtro
 
SpringFactoriesLoader
Para darle una base, analizaré brevemente aquí
Uso de esta clase de herramienta SpringFactoriesLoader. En realidad es
El principio del mecanismo SPI en Java es el mismo, pero es mejor que SPI
El punto es que no todas las clases se cargan a la vez, sino que se agregan de acuerdo con la clave
Conjunto. Primero, el rol de SpringFactoriesLoader es
En el archivo classpath / META-INF / spring.factories, de acuerdo con la clave
Cargue la clase correspondiente en el contenedor Spring IoC. 
 
Comprensión profunda del filtrado condicional
Al analizar el código fuente de AutoConfigurationImportSelector, lo hará
Primer escaneo spring-autoconfiguration-metadata.properties
File, y finalmente al escanear la clase correspondiente a spring.factories, se combinará
Filtra los metadatos anteriores, ¿por qué filtrarlos? Hay muchas razones
@Configuration en realidad está cargado por otros marcos,
Si no hay una dependencia asociada en el entorno de classpath actual, significa
No es necesario cargar estas clases, por lo que filtrar a través de esta condición puede
Reduzca efectivamente el número de clases @configuration para reducir
Hora de inicio de SpringBoot.
Otras notas en condicional

 

 

Supongo que te gusta

Origin www.cnblogs.com/flgb/p/12688677.html
Recomendado
Clasificación