Análisis del principio Spring Boot

Aprendimos que Spring Boot proporciona una gran cantidad de módulos de dependencia listos para usar. Mientras los desarrolladores agreguen dependencias relacionadas en el archivo pom Maven, Spring Boot creará e inyectará automáticamente el Spring Bean requerido en el contexto de esta aplicación.

En este artículo, tomamos la configuración automática de FreeMarker como ejemplo, centrándonos en explicar el principio de funcionamiento y el proceso de carga. Debido a que FreeMarker es relativamente simple, solo hay tres clases en el código fuente de Spring Boot, por lo que es relativamente fácil de entender como un caso.

Análisis del principio Spring Boot
¿Qué nos ayuda a hacer EnableAutoConfiguration?
¿Recuerdas la anotación @EnableAutoConfiguration?

Repasemos primero.

@RestController
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.lianggzone.springboot" })
public class WebMain {
        public static void main(String[] args) throws Exception {
                SpringApplication.run(WebMain.class, args);
        }
}

Entonces, ahora analizamos el código fuente de @EnableAutoConfiguration.
Análisis del principio Spring Boot

Aquí, la clave es que la clase import autoimportImportSelector importada por la anotación @Import es lo más importante es escanear el archivo spring.factories a través de SpringFactoriesLoader.loadFactoryNames en el método getCandidateConfigurations.
Análisis del principio Spring Boot

Ahora, estamos viendo el código fuente de SpringFactoriesLoader.
Análisis del principio Spring Boot

De repente, ¿descubriste que el archivo spring.factories es bastante importante? Así es, Spring Boot escanea el contenido de este archivo para determinar qué configuraciones automáticas están disponibles. Tomando FreeMarker como ejemplo, veamos cómo está configurado.
Análisis del principio Spring Boot

Por lo tanto, Spring Boot escanea el archivo Spring.factories en el parámetro EnableAutoConfiguration para la configuración automática y lo carga.

Los parámetros de configuración class-FreeMarkerProperties
aquí se pueden configurar directamente en application.properties. Encontramos que su prefijo debe ser spring.freemarker.
Análisis del principio Spring Boot

Clase de configuración automática:
la anotación principal de FreeMarkerAutoConfiguration
Análisis del principio Spring Boot
se menciona en "Spring Boot Demystifying and Practical Source Code Analysis-Out of the Box, Built-in Mystery", se menciona que la clase correspondiente en el parámetro @ConditionalOnClass solo se resolverá cuando exista en el directorio classpath Clase de configuración, de lo contrario, la clase de configuración modificada por la anotación no se analiza.

Spring Boot proporciona muchas clases de configuración automática, como RedisAutoConfiguration, MongoRepositoriesAutoConfiguration y ElasticsearchAutoConfiguration. Estas clases de configuración automática determinarán si la clase que necesita existe en el classpath. Si existe, configurará automáticamente la configuración relacionada, de lo contrario no lo hará. Por lo tanto, la configuración automática, después de que el desarrollador agrega dependencias relacionadas en el archivo pom de Maven, estas dependencias descargarán muchos paquetes jar al classpath. Con estas bibliotecas, se activará la configuración automática, para que podamos usar fácilmente De la función del módulo.

Además, hay una anotación principal @EnableConfigurationProperties, que se utiliza principalmente para cargar la clase de parámetros de configuración que mencionamos anteriormente.

Inyectar
Análisis del principio Spring Boot
el código fuente de Bean es muy fácil de entender, principalmente quiero hablar de 2 notas.

La primera anotación es @ConditionalOnMissingBean (name = "freeMarkerViewResolver"), que especifica el procesamiento cuando el contenedor no especifica un Bean.

El segundo comentario es, @ConditionalOnProperty, si la propiedad especificada tiene el valor especificado. En otras palabras, si no hay configuración en application.properties, el valor predeterminado es verdadero, lo que significa que se cumple la condición.

Supongo que te gusta

Origin blog.51cto.com/14765930/2486704
Recomendado
Clasificación