Lección 1-1: Los antecedentes de Spring Boot y su filosofía de diseño

"Competente en Spring Boot 42" se divide en cinco partes. La primera parte es el contenido básico desde cero. Hay 4 lecciones para ayudarlo a comprender rápidamente Spring Boot. Lo llevaré a familiarizarse con los conceptos básicos y de diseño de Spring Boot. Explique la construcción del entorno de Spring Boot y la introducción del proyecto y, finalmente, tome un Hello World como ejemplo para probar la construcción del entorno y familiarizarse con el proceso de desarrollo. El enfoque de este capítulo son los nuevos cambios en Spring Boot 2.0 Los estudiantes que hayan estudiado cursos anteriores pueden concentrarse en esta sección. A continuación ingresaremos específicamente el contenido de la primera conferencia.

Para comprender los antecedentes de Spring Boot, primero debemos comprender la historia de Spring, no solo porque Spring Boot proviene del sistema Spring, sino que también el nacimiento de Spring Boot está estrechamente relacionado con el desarrollo del framework Spring.

La historia de la primavera

En 2002, cuando Java EE y EJB se hicieron populares, muchas empresas conocidas adoptaron esta solución técnica para el desarrollo de proyectos. En este momento, un estadounidense pensó que EJB estaba demasiado inflado. No todos los proyectos necesitan usar un marco grande como EJB. Debería haber una mejor solución para resolver este problema.

Para demostrar que su idea es correcta, escribió un libro "Expert One-on-One J2EE" en octubre de 2002, presentó la situación del desarrollo de aplicaciones empresariales Java en ese momento y señaló el marco de componentes Java EE y EJB Tiene algunos defectos importantes. En este libro, propuso una solución más simple basada en clases de Java ordinarias e inyección de dependencias.

En el libro, mostró cómo construir un sistema de reserva de asientos en línea escalable y de alta calidad sin usar EJB. Para construir la aplicación, escribió más de 30.000 líneas de código de infraestructura, el paquete raíz del proyecto se llamó com.interface21, por lo que la gente originalmente llamó a este marco de código abierto interface21, que es el predecesor de Spring.

¿Quién es él? Él es el famoso Rod Johnson (en la foto de abajo). Rod Johnson no solo obtuvo una licenciatura en informática de la Universidad de Sydney, sino también una licenciatura en música. Lo que es más sorprendente es que también obtuvo una licenciatura en musicología antes de regresar al campo del desarrollo de software. Doctorado. Ahora Rod Johnson se ha ido de Spring, se ha convertido en un inversor ángel, también es director de varias empresas y ya ha alcanzado la cima de su vida.

Después de la publicación de este libro, el diseño y desarrollo J2EE uno a uno se convirtió en un éxito. La mayor parte del código de infraestructura proporcionado de forma gratuita en este libro es altamente reutilizable. En 2003, Rod Johnson y sus colegas desarrollaron un nuevo marco llamado Spring basado en este marco Según Rod Johnson, Spring fue el nuevo comienzo del J2EE tradicional, y luego Spring se convirtió en el carril rápido.

  • En marzo de 2004, se lanzó la versión 1.0.
  • En octubre de 2006, se lanzó la versión 2.0.
  • En noviembre de 2007, pasó a llamarse SpringSource y Spring 2.5 se lanzó al mismo tiempo.
  • En diciembre de 2009, se lanzó Spring 3.0.
  • En diciembre de 2013, Pivotal anunció el lanzamiento de Spring Framework 4.0.
  • En septiembre de 2017, se lanzó Spring 5.0.

El nacimiento de Spring Boot

Durante muchos años, la plataforma Spring ha sido criticada por su gran cantidad de configuración XML y su compleja gestión de dependencias.

A medida que más y más personas y empresas utilizan Spring para el desarrollo, Spring ha cambiado gradualmente de un único marco simple y pequeño a un software de código abierto grande y completo. Los límites de Spring se han expandido continuamente. Más tarde, Spring puede hacer casi cualquier cosa. De hecho, el software de código abierto y el middleware de uso general en el mercado son compatibles con los componentes correspondientes de Spring. Después de disfrutar de la conveniencia de Spring, la gente también encuentra algunos problemas.

Cada vez que Spring integra un software de código abierto, es necesario agregar alguna configuración básica A medida que el proyecto de desarrollo se hace más grande, a menudo es necesario integrar una gran cantidad de software de código abierto. El uso posterior de Spring para desarrollar proyectos a gran escala requiere la introducción de muchos archivos de configuración, lo que resulta en una configuración difícil de entender y una alta tasa de error.Más tarde, la gente incluso llamó a Spring un infierno de configuración.

En la conferencia SpringOne 2GX en 2013, el CTO de Pivotal, Adrian Colyer, respondió a estas críticas y mencionó específicamente que uno de los objetivos futuros de la plataforma es lograr una experiencia de desarrollo de configuración sin XML. Las funciones implementadas por Spring Boot están más allá de la descripción de esta tarea. No solo los desarrolladores ya no necesitan escribir XML, sino que en algunos escenarios ni siquiera necesitan escribir tediosas declaraciones de importación.

En 2013, el concepto de microservicios también emergió lentamente, y el rápido desarrollo de pequeñas aplicaciones independientes se volvió más urgente. Spring resultó estar en una intersección así. A principios de 2013, comenzó el desarrollo del proyecto Spring Boot. En 2014, Spring Boot lanzó su primera versión oficial tras el nacimiento de Spring 4.0.

Spring Boot no pretende ser un reemplazo para los muchos proyectos de capa "Foundation" en la plataforma Spring. El objetivo de Spring Boot no es proporcionar nuevas soluciones al dominio del problema resuelto, sino aportar otra experiencia de desarrollo a la plataforma, simplificando así el uso de estas tecnologías existentes. Para los desarrolladores que ya están familiarizados con el ecosistema de Spring, Spring Boot es una opción ideal; para los recién llegados que adoptan las tecnologías de Spring, Spring Boot proporciona una forma más concisa de usar estas tecnologías.

Equipo de desarrollo de Spring Boot

A menudo vemos esta oración cuando presentamos Spring Boot: Spring Boot es un marco completamente nuevo proporcionado por el equipo de Pivotal. De esto sabemos que Spring Boot fue desarrollado por el equipo de Pivotal, entonces, ¿qué tipo de equipo es el equipo de Pivotal? De hecho, el equipo de Pivotal aquí se refiere a la empresa Pivotal.

Pivotal: Comprometidos con "Estamos transformando la forma en que el mundo construye software", proporcionando plataformas y servicios PaaS de desarrollo de aplicaciones nativas de la nube, ayudando a los clientes empresariales a adoptar una metodología de desarrollo de software ágil, mejorando así la eficiencia de los desarrolladores de software. , Reducir los costos de operación y mantenimiento, lograr la transformación digital, la innovación de TI y, en última instancia, la innovación empresarial.

La empresa Pivotal puede describirse como una reunión de grandes vacas. Los productos de código abierto de la empresa incluyen: Spring y derivados de Spring, servidor web Tomcat, middleware de caché Redis, middleware de mensajería RabbitMQ, plataforma como servicio Cloud Foundry, motor de datos Greenplum y el famoso GemFire (Uno de los componentes de la solución del sistema 12306). Los desarrolladores detrás de estos conocidos productos de código abierto están todos en Pivotal. Su equipo de I + D reúne a desarrolladores de clase mundial. ¿Por qué Spring Boot es tan bueno? Tal vez pueda encontrar algunas respuestas aquí.

Mirando hacia atrás en el historial de desarrollo de Pivotal, es simplemente una fusión y adquisición comercial:

  • En 1989, Rob Mi fundó Pivotal Labs, cuyo negocio principal es ayudar a los clientes a desarrollar software, y una vez brindó soporte técnico a Google y Twitter;
  • En 2003, EMC adquirió VMware;
  • En 2009, VMware adquirió Spring Company;
  • En 2012, EMC adquirió Pivotal Labs en efectivo;
  • En 2013, EMC y VMware separaron sus Cloud Foundry, Pivotal Labs, Greenplum y otros recursos de computación en la nube y big data. GE invirtió 105 millones de dólares estadounidenses para establecer una nueva empresa, Pivotal;
  • En 2015, EMC fue nuevamente adquirida por DELL.

Después del establecimiento de Pivotal, Spring Boot se lanzó en 2014, Spring Cloud se lanzó en 2015 y Pivotal se incluyó en Nueva York en 2018. Podemos comprender el historial de desarrollo de Pivotal a través de una imagen.

"Competente en Spring Boot 42" .

El núcleo de Spring Boot: la convención es mejor que la configuración

Entonces, ¿qué es la convención sobre la configuración?

Convención sobre configuración (Convención sobre configuración), también conocida como programación por convención, es un paradigma de diseño de software diseñado para reducir la cantidad de decisiones que los desarrolladores de software deben tomar y para obtener beneficios simples sin perder flexibilidad.

Básicamente, el desarrollador solo necesita especificar la parte no conforme de la aplicación. Por ejemplo, si hay una clase denominada Usuario en el modelo, la tabla correspondiente en la base de datos se denominará usuario de forma predeterminada. Solo cuando se desvíe de esta convención, como nombrar la tabla "user_info", es necesario escribir la configuración sobre este nombre.

Podemos seguir esta idea para imaginar que estamos de acuerdo en que la capa Controlador es la capa de solicitud web y podemos omitir la configuración de MVC; estamos de acuerdo en que la clase al final del Servicio inyecta transacciones automáticamente, por lo que la configuración de transacciones de aspecto de Spring se puede omitir.

En el sistema Spring, Spring Boot JPA es una de las mejores implementaciones de la convención sobre la configuración. No es necesario que prestes atención a la estructura de la tabla. Estamos de acuerdo en que el nombre de la clase es el nombre de la tabla y el nombre del atributo es el campo de la tabla. La cadena corresponde a varchar y long corresponde a bigint. Solo se pueden configurar por separado las propiedades que requieran algunos requisitos especiales De acuerdo con este acuerdo, podemos simplificar enormemente el trabajo anterior.

El sistema Spring Boot demuestra completamente la idea de la convención sobre la configuración, que van desde la configuración predeterminada de los archivos de configuración y el middleware hasta el contenedor integrado y varios Starters en el ecosistema, todos siguiendo esta regla de diseño. Spring Boot anima a las organizaciones de software a crear su propio Starter. Uno de los componentes principales del Starter es el módulo de autoconfiguración, que también es la función principal del Starter. Se ensambla automáticamente al inicio y las propiedades se configuran por defecto.

Se puede decir que es precisamente debido a la configuración simplificada de Spring Boot y numerosos Starters que Spring Boot se ha vuelto simple, fácil de usar y rápido para comenzar. También se puede decir que es la implementación completa de la idea de la convención sobre la configuración lo que hace que Spring Boot vaya a la gloria. La idea de las convenciones de Spring Boot sobre la configuración hace que los proyectos de Spring Boot sean muy fáciles de usar y facilita la programación.De hecho, la programación debe ser muy simple, y la simplicidad es la belleza de la programación.

Entrantes

Spring Boot Starters está diseñado en base al concepto de convención sobre la configuración. Hay dos componentes centrales en Spring Boot Starter: código de configuración automática y provisión de módulos de configuración automática y otras dependencias útiles. Esto significa que cuando introducimos un Starter en nuestro proyecto, tenemos la capacidad predeterminada de usar este software. A menos que necesitemos una configuración específica, en general, solo necesito una pequeña cantidad de configuración o ninguna configuración para usar la función correspondiente del componente.

Spring Boot se compone de muchos Starters, y el número de miembros de la familia Starter aumenta con la aprobación de la versión. En los proyectos tradicionales de Maven, algunas capas y componentes generalmente se dividen en módulos para su administración con el fin de depender entre sí para su reutilización. En los proyectos Spring Boot, podemos crear un Spring Boot Starter personalizado para lograr este propósito.

Spring Boot tiene una gran capacidad para integrar software de código abierto comunitario. Antes de usar Spring Boot, debemos integrar el paquete de componentes correspondiente en nuestro proyecto de desarrollo de acuerdo con las características de cada software de código abierto, debido a la filosofía de diseño y desarrollo de cada componente. Los equipos son inconsistentes, por lo que habrá muchos estilos de llamadas diferentes en nuestro proyecto.

Spring Boot integra software de código abierto convencional para formar una serie de Starters, lo que nos permite tener una experiencia de programación consistente para integrar varios software. Spring Boot ha realizado una gran optimización durante la integración, por lo que a menudo solo necesitamos integrar Se puede completar muy poca configuración y código. Se puede decir que varios Starters son una de las mayores ventajas de Spring Boot.

La siguiente es una lista de Spring Boot Starters de uso común.

nombre descripción Pom
arrancador de arranque de primavera Core Starter, que incluye compatibilidad con la configuración automática, registro y YAML Pom
Spring-boot-starter-activemq Se utiliza para implementar mensajes JMS utilizando Apache ActiveMQ Pom
primavera-arranque-arrancador-amqp Se usa para usar Spring AMQP y Rabbit MQ Pom
caché de arranque de arranque de primavera Soporte de almacenamiento en caché para usar el marco Spring Pom
Spring-boot-starter-data-elasticsearch Se utiliza para buscar utilizando ElasticSearch, motor de análisis y Spring Data ElasticSearch Pom
Spring-boot-starter-data-jpa Se usa para implementar Spring Data JPA usando Hibernate Pom
Spring-boot-starter-data-mongodb Se usa para usar bases de datos basadas en documentos MongoDB y Spring Data MongoDB Pom
Spring-boot-starter-data-redis Se utiliza para usar Spring Data Redis y el cliente Jedis para operar el almacenamiento de datos de valor clave Redis Pom
primavera-arranque-arrancador-jta-atomikos Se usa para implementar transacciones JTA usando Atomikos Pom
sring-boot-starter-mail Soporte para enviar correo electrónico usando Java Mail y Spring Framework Pom
primavera-arranque-arranque-cuarzo Soporte de cuarzo para tareas cronometradas Pom
primavera-arranque-arranque-seguridad Soporte para Spring Security Pom
prueba de arranque de arranque de primavera Se utiliza para probar aplicaciones Spring Boot y admite bibliotecas de prueba comunes, incluidas JUnit, Hamcrest y Mockito Pom
primavera-arranque-arranque-hoja de tomillo Se utiliza para crear aplicaciones web MVC utilizando el motor de plantillas Thymeleaf Pom
validación-arranque-arranque-primavera Se usa para implementar la validación de Java Bean usando Hibernate Validator Pom
Spring-boot-starter-web Se utiliza para crear aplicaciones web con Spring MVC, incluido RESTful. Tomcat es el contenedor integrado predeterminado Pom
Spring-boot-starter-websocket Se utiliza para crear aplicaciones WebSocket utilizando el soporte WebSocket de Spring Framework Pom

Aquí hay solo un extracto del Starter que usamos con más frecuencia, y el Starter completo está aquí: Iniciadores de la aplicación Spring Boot .

Debido a que Spring Boot es lo suficientemente poderoso, muchas comunidades de terceros se han integrado activamente. Por ejemplo: MyBatis, RabbitMQ (uso avanzado), etc., la lista de soporte de la comunidad de terceros, puede ver las Contribuciones de la comunidad aquí , puede ver la lista de otros Starters contribuidos por la comunidad.

Después de leer estos Starters, ¿cree que Spring Boot es muy poderoso? Casi todo el software de código abierto Spring Boot en el que estamos involucrados son compatibles. Para usar este software en el entorno Spring Boot, solo necesita introducir el paquete de inicio correspondiente.

La relación entre Spring, Spring Boot y Spring Cloud

Las dos funciones principales originales de Spring, Spring IoC y Spring Aop, hicieron Spring, y Spring continuó desarrollándose en estas dos funciones principales, y solo entonces surgió una serie de excelentes productos como la transacción Spring y Spring MVC, y finalmente hicieron el imperio Spring. En la etapa posterior, Spring puede resolver casi todos los problemas del desarrollo empresarial.

Spring Boot se desarrolló sobre la base del poderoso ecosistema Spring Empire. Spring Boot se inventó no para reemplazar a Spring, sino para facilitar a las personas el uso de Spring. Por lo tanto, sin las poderosas funciones y ecología de Spring, no habrá más popularidad de Spring Boot. El concepto del uso de convenciones de Spring Boot es mejor que la configuración, y el uso de Spring se ha refactorizado para hacer más viable el desarrollo posterior de Spring.

Spring no repite la fabricación de ruedas. Simplemente combina los marcos de servicio relativamente maduros y prácticos desarrollados por varias empresas, los vuelve a empaquetar al estilo de Spring Boot y protege configuraciones complejas y principios de implementación, y finalmente desarrolla El autor proporciona un conjunto de kits de desarrollo de sistemas distribuidos que son fáciles de entender, de implementar y de mantener.

Spring Cloud es una colección ordenada de una serie de marcos que utiliza la conveniencia de desarrollo de Spring Boot para simplificar inteligentemente el desarrollo de la infraestructura del sistema distribuido. El registro de descubrimiento de servicios, el centro de configuración, el bus de mensajes, el equilibrio de carga, el disyuntor, el monitoreo de datos, etc. se pueden iniciar e implementar con un solo clic utilizando el estilo de desarrollo de Spring Boot.

Spring Cloud es un marco de desarrollo con una serie de funciones proporcionadas para resolver la gobernanza del servicio en la arquitectura de microservicios, y Spring Cloud se desarrolla completamente basado en Spring Boot. Spring Cloud usa las características de Spring Boot para integrar componentes sobresalientes en la industria de código abierto. Proporciona un conjunto de soluciones para la gobernanza de servicios en la arquitectura de microservicios.

En resumen, podemos entenderlo de esta manera. Es precisamente por las dos poderosas funciones de Spring IoC y Spring Aop que Spring tiene Spring, y el desarrollo continuo de Spring ecology tiene Spring Boot. Usar Spring Boot hace que Spring sea más fácil de usar y más viable. Spring Cloud Es una solución de gobierno de servicios bajo la arquitectura de microservicios desarrollada en base a Spring Boot.

La siguiente es la relación entre ellos.

Spring Ioc / Aop> Spring> Spring Boot> Spring Cloud

para resumir

Por un lado, Spring Boot nació debido a los problemas encontrados en el desarrollo del propio Spring. Por otro lado, cuando nació la idea de los microservicios, existía una necesidad urgente de una herramienta de desarrollo rápido para realizar la implementación de la tecnología de microservicios. Bajo este telón de fondo nació Spring Boot. .

La idea general de diseño de Spring Boot es: la convención es mejor que la configuración. Con base en esta idea de diseño, Spring Boot ha llevado a cabo reformas drásticas para hacer más convenientes el desarrollo, las pruebas y la implementación. Numerosos principiantes han contribuido al desarrollo de Spring Boot, lo que facilita el desarrollo de proyectos utilizando Spring Boot.

Haga clic para obtener más información sobre "Competente en Spring Boot 42" .

Supongo que te gusta

Origin blog.csdn.net/ityouknow/article/details/108729179
Recomendado
Clasificación