1. Prefacio
He estado estudiando Spring Boot por un tiempo. Organizaré mi investigación y la compartiré contigo recientemente. Habrá alrededor de 10 a 20 blogs. Toda la serie se basará en un sistema de blog simple, porque no es muy fácil de entender solo hablando de teoría, y si no puede comprender sistemáticamente algunos puntos de conocimiento cada vez a través de un mini programa simple, por lo que, según un sistema simple, veamos cómo implementar un sistema completo a través del arranque de primavera. Además de los puntos de conocimiento básico del arranque de primavera, esta serie también implica la combinación de arranque de primavera con base de datos, almacenamiento en caché (redis), colas de mensajes, etc., así como implementación de múltiples instancias. Los estudiantes interesados pueden prestar atención.
2. Introducción al arranque de primavera
La bota de primavera se puede ver desde el nombre que se basa en la primavera, por lo que los estudiantes que no están familiarizados con la primavera deben aprender primero sobre la primavera. En segundo lugar, Spring Boot nos ayuda a integrar muchas funciones de uso común, lo que hace que toda la configuración sea más simple. Los estudiantes que han usado Spring deben saber que, aunque Spring ha estado trabajando duro para reducir la complejidad de la configuración, todavía es bastante problemático configurar un entorno (web) completamente disponible, como configurar registros, bases de datos, cachés, etc., luego configurar Tomcat, y finalmente publicar el programa en el directorio Tomcat. Spring Boot ha simplificado enormemente este proceso. Proporciona muchos entrantes, solo introduce el paquete JAR correspondiente. Por ejemplo, necesitamos integrar Tomcat, simplemente introduzca el iniciador de Tomcat:
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactId> spring-boot-starter-Tomcat </artifactid> </pendency>
Nota: Los ejemplos en este artículo se basan en Maven, por lo que si no está familiarizado con Maven, primero puede ver cómo usarlo. Si está familiarizado con Gradle, también puede hacer los ajustes correspondientes a la configuración de acuerdo con la situación.
Podemos ver el arranque proporcionado por Spring Boot desde la documentación oficial:
Aquí solo intercepté una pequeña parte, y puede ver que Spring Boot admite almacenamiento en caché, procesamiento por lotes, MQ, ES, etc. Para la lista completa, consulte la documentación oficial. No explicaré mucho más. Explicaré toda la función de arranque de primavera a través de ejemplos. ¡Veamos primero Spring Boot para implementar una versión web de Hello World!
3. Programa Hello World
3.1 Hello World Code Source
Paso 1: importar el paquete jar
<Parent> <MoupRoD> org.springframework.boot </proupid> <artifactid> spring-boot-starter-parent </artifactid> <version> 1.5.8.release </versión> </parent> <pendencies> <pendency> <grupo> org.springframework.boot </groupid> <artifactid> spring- starter-starter-starter-stArtarter-webid </arthid-webid> </pendency> </dependencias>
Paso 2: Escribe la clase de controlador
paquete com.pandy.blog; import org.springframework.steretype.controller; import org.springframework.web.bind.annotation.requestmapping; import og.springframework.web.bind.annotation.responseBody; import java.util.hashmap; import java.util.map; HelloWorld {@RequestMapping ("/Hello") @ResponseBody Map público <string, object> hello () {map <string, object> map = new Hashmap <> (); map.put ("hola", "mundo"); mapa de retorno; }}Paso 3: Escriba la clase de inicio (ingrese la biblioteca)
paquete com.pandy.blog; importar org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplicationpublic de la aplicación de la clase publicitaria {public static void main (string [] args) arroja excepciones {springapplication.run (application.class, args); }}Ejecute el método principal de esta clase y luego visite http: // localhost: 8080/hola, y puede ver los siguientes resultados:
¿Te sientes muy feliz? Si no tiene una sola línea de configuración, puede ejecutar una aplicación web directamente. ¿Pero alguna vez has pensado en cómo se logra esto después de ser feliz? A continuación, analizamos el código anterior en línea por línea. Aunque no hay muchas líneas, todavía hay muchas cosas que vale la pena aprender y comprender.
3.2 Análisis de archivos de POM
Comencemos con el archivo POM, que solo presenta dos dependencias en el archivo POM. El primero es el stary-boot-starter-sarent. Los amigos que están familiarizados con Maven deben saber que Maven también puede heredar la configuración del archivo POM principal como la clase. Podemos ver el archivo POM de Spring-Boot-Starter-Parent. Debido a problemas de espacio, solo miramos dos partes aquí. Otras cosas son más fáciles de entender. Puedes leerlos tú mismo. La primera parte es:
Este archivo hereda otro archivo de POM, a saber, las dependencias de boot spring. Este archivo en realidad contiene muchos frascos, y su función es administrar de manera uniforme la versión del paquete JAR que depende de Spring Boot. Por lo tanto, puede ver más tarde que al introducir frascos en cada componente, no hay necesidad de especificar el número de versión. Otro punto que debe explicarse es la administración de los archivos de configuración:
Como puede ver, de manera predeterminada, los archivos en el directorio/src/main/recursos se agregarán al classpath como archivos de recursos. Además, este lugar solo filtra los tres archivos: aplicación*.yml, aplicación*.yaml y aplicación*.properties. ¿Qué significa este filtro? Cualquier persona que haya configurado Spring MVC debe saber que al configurar una base de datos, generalmente configuramos la información de la base de datos en un archivo de propiedades y luego la introducir en el archivo de configuración de Spring a través de la forma de <Property Name = "DriverClass" Value = "$ {JDBC.Driver}" />. La función de este filtro es reemplazar los pares de valor de nombre configurados en el archivo de configuración con los caracteres $ {xxx} en el archivo de configuración de Spring durante la compilación, pero esta función no es necesaria. Incluso si no se reemplaza, Spring puede leer los elementos de configuración en tiempo de ejecución.
Para resumir: el papel de la parente de arranque de boot de primavera:
1) Gestión de paquetes JAR.
2) Gestión de archivos de configuración predeterminada.
3) Gestión común de complemento.
De hecho, a partir del análisis de qué, podemos ver que la función central de los primaverales de arranque de boot es administrar todos los paquetes de jar de los que depende el arranque de la primavera. Sin embargo, hay un problema obvio con el método principal. Muchas compañías tienen sus propios archivos principales, y Maven no puede configurar múltiples padres. ¿Qué debo hacer si no se usa el parente de arranque de primavera? ¿Necesita importar paquetes de jar uno por uno? De hecho, Spring Boot proporciona otra forma de resolver este problema, que es agregar la administración de dependencia de Spring Boot a su propio archivo POM:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependency> </dependency> </dependency> </dependency> </dependency> </pendency> </dependence> </pendency> </pendency> </dependence> </pepresence> </pendency> </pendency> </pendency> </pendency> </dependency> </pepertency> </dependency> dependence> </dependency> </dependency> </pendency> </dependence> </pendency> </pendency> </dependence> </pepresence> </pendency> </pendency> </pendency> </pendency> </dependency> </pepertency> </dependency> dependence> </dependency> </dependency> </pendency> </dependence> </pepertency> </pepertency> </dependency> </pepertency> </
De hecho, del análisis anterior, podemos ver que este es también el padre del archivo POM de primavera de arranque de primavera, y este archivo POM administra principalmente muchos paquetes JAR. Entonces, después de importar esto, no necesita tarrar uno por uno para importarlo. Sin embargo, en este caso, no se utilizará el complemento en el parente de arranque de boot spring-boot, y la función de reemplazo de archivo de configuración predeterminada ya no está disponible. Sin embargo, esto no tiene efecto. Por un lado, estas funciones no son necesarias, y por otro lado, si es necesario, es fácil agregarlas usted mismo.
3.3 Análisis de clase Helloworld:
Veamos la clase Helloworld. Después de usar Spring MVC, debe saber que esta clase no está relacionada con Spring Boot, y el código de negocios no tiene nada relacionado con Spring. Este también es un principio al que la primavera siempre se ha adherido, y es extremadamente invasivo, lo cual también es una razón principal para el éxito de la primavera. Hay tres anotaciones relacionadas con la primavera en esta clase, a saber, @Controller, @RequestMapping y @ResponseBody, pero estas tres anotaciones también son proporcionadas por Spring MVC. No hay mucha conexión con Spring Boot, por lo que no entraré en detalles aquí. Si no está muy claro, puede consultar el contenido de Spring MVC. Las funciones básicas de las tres anotaciones son las siguientes:
3.4 Análisis de clase de aplicación
Finalmente, veamos la clase de aplicación, y encontrará que hay aún menos cosas en esta clase. Solo hay una línea de código útil en total, a saber, SpringApplication.run (Application.Class, Args); La función de este método es cargar la clase de aplicación. Entonces, ¿hay algo especial en la clase de aplicación? Puedes echar un vistazo. De hecho, lo único especial de esta clase es una anotación @SpringBootApplication, por lo que el funcionamiento del arranque de primavera debe tener muchas conexiones con esta anotación. Podemos ver el código fuente de esta anotación:
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoconfigurationExcludeFilter.class)}) public @Interface SpringBootApplication {No hablaré sobre el método principal de esta anotación. Puedes ver después de leerlo. Es principalmente proporcionar alias para las anotaciones anteriores. Todos deberían saber que las primeras cuatro anotaciones (@Target (elementType.Type), @Retention (retenciónPolicy.Runtime), @Documented, @inherited) se mencionan anteriormente. Los amigos que no están familiarizados con él analizarán cómo JDK implementa anotaciones personalizadas. Expliquemos las siguientes tres anotaciones en detalle: @springbootconfiguration, @enableautoconfiguration, @ComponentsCan.
Echemos un vistazo a SpringBootConfiguration primero. Esta anotación es relativamente simple, y el código fuente es el siguiente:
@Target ({elementtype.type})@retención (retenciónPolicy.Runtime)@documented@configurationPublic @Interface SpringBootConfiguration {}Esta anotación solo hereda @Configuration. Todos deben saber que Spring proporciona tres formas de configuración: (1) Configuración del archivo XML (2) Configuración de anotación (3) Configuración de la clase Java. @Configuration es una anotación utilizada para identificar una clase como clase de configuración. Después de la primavera 4, la configuración es más popular en las clases de Java, por lo que Spring Boot también tiende a ser de esta manera. Y del código fuente, se puede ver que la función de SpringBootConfiguration es identificar la clase como una clase de configuración.
A continuación, echemos un vistazo a la anotación @enableautoconfiguration. El código fuente de esta anotación es un poco complicado. No voy a entrar en detalles aquí. Lo implementaré en el artículo posterior en detalle. Permítanme hablar sobre la función de esta anotación. Su función principal es implementar la configuración automática. ¿Qué es la configuración automática? Spring Boot hará una configuración automática basada en el paquete JAR que introdujo. Por ejemplo, si hay un jar HSQLDB en classpath, Spring Boot configurará automáticamente una base de datos en memoria para usted. En este ejemplo, también podemos ver que, debido a que hemos introducido Spring-MVC, Tomcat y otros frascos relacionados, Spring Boot adivinará que usted es un proyecto web, y luego realizará automáticamente algunas configuraciones de Spring MVC, como el soporte para recursos estáticos, compatible para convertir automáticamente los resultados devueltos a datos de formateo JSON, etc. Estas son el resultado de la configuración automática. Los estudiantes que están familiarizados con la primavera habilitan* anotaciones deberían poder comprender esta anotación más fácilmente, porque hay muchas anotaciones similares en la primavera.
Finalmente, echemos un vistazo a @ComponentsCan. Esta anotación no es proporcionada por Spring Boot, pero es proporcionada por Spring. Los paquetes o clases escaneados por la primavera, es decir, qué paquetes y clases se incluirán automáticamente en la administración de contenedores Spring IOC. El COI instancia estas clases de acuerdo con la configuración.
Ahora resumamos la función de la anotación SpringBootConfiguration:
1) Marque que esta clase es una clase de configuración.
2) Especifique el paquete escaneado para facilitar los contenedores de COI de primavera para administrar su instancia y ciclos de vida.
3) Configuración automática y use el paquete JAR introducido para adivinar la intención del usuario de configurar automáticamente.
4. Resumen
Este artículo analiza una versión web de Hello World implementada por Spring Boot en detalle. A través de este ejemplo, entendemos las operaciones básicas del arranque de primavera, y a través del análisis del código en cada línea, tenemos una comprensión aproximada de los principios de la arranque de primavera. En general, Spring Boot administra paquetes JAR de manera uniforme, y luego los configura automáticamente de acuerdo con el arranque que elegimos. De esta manera, resuelve la gestión de dependencia compleja y la configuración de las líneas de racionalización, para que los desarrolladores puedan centrarse más en su negocio sin tener que hacer un trabajo de configuración muy complicado. Al mismo tiempo, el servicio rápido y liviano de Spring Boot también es muy adecuado para la arquitectura de microservicio. Compartiré esto contigo si tienes la oportunidad de hacer un seguimiento. Bienvenido a seguir siguiendo.