Aprendamos juntos la serie SF framework: resumen de aprendizaje del código fuente de Springframework

proceso de aprendizaje

Aprender Springframework 6.0.8 tomó casi 4 meses y finalmente terminó. El contenido principal del aprendizaje se muestra en la figura (cuadro rojo):
Insertar descripción de la imagen aquí

Este estudio se centra principalmente en los módulos principales: Beans, Context, Core, SpEL (completamente independiente del marco, sin estudio en profundidad), AOP, tomando como eje el proceso de inicialización de las aplicaciones SF y tiene una comprensión más profunda de Spring. Inyección de dependencia de tecnologías centrales, eventos, recursos, i18n, validación, enlace de datos, conversión de tipos, SpEL, AOP.

Resumen de métodos de aprendizaje.

1. Adopte principalmente el método de seguimiento de la aplicación, es decir, escriba la aplicación más simple y luego use la inicialización del contenedor de la aplicación ClassPathApplicationContext como punto de partida para rastrear todo el proceso de inicialización: inicialización del contenedor, carga de recursos, carga de definiciones de Bean e inicialización de Bean; al mismo tiempo, combine el proceso de inicialización con varias tecnologías. Haga clic para comenzar y realizar un seguimiento de cómo implementar la tecnología específica. Personalmente, creo que la característica más efectiva de este método es su implementación y verificación de resultados, lo que ayuda a comprender el marco.
2. No basta con mirar el código fuente durante el proceso de aprendizaje, también es necesario hacer lo siguiente:
2.1 Utilizar herramientas UML para dibujar diagramas de clases, de modo que sea fácil establecer una impresión general de los puntos relevantes.
2.2 Dibujar diagramas de tiempo de procesos clave para ayudar a aclarar el proceso de ejecución y las relaciones de salto.
2.3 Tomar notas, que pueden ser en forma de documentos o blogs. En particular, los comentarios línea por línea en el código fuente son muy útiles para comprender el marco.
2.4 Lee una y otra vez y revisa lo que has hecho en 2.1-2.3.
2.5 Persistencia: Leer el código fuente será muy incómodo al principio, los saltos constantes parecen entrar en un laberinto, sólo la perseverancia puede resolver el problema.

Resumen de comprensión de Springframework

1. Springframework se ha desarrollado hasta 6.0.8 y la complejidad del sistema es muy alta, como se puede ver en la cantidad de clases:
Beans: 313 clases
Contexto: 517 clases
Core: 634 clases
SpEL: 110 clases
AOP: 203 clases

2. Spring proporciona capacidades de generación de dependencias y su marco en sí también insiste en la generación de dependencias: la interfaz primero. Sus beneficios específicos son los siguientes:
2.1 Interfaz primero, que es el mecanismo básico para que el marco proporcione capacidades de expansión. Es posible que las extensiones no permitan que las aplicaciones intervengan o utilicen las capacidades del marco mientras admiten extensiones al propio marco.
2.2 Uso de interfaces marcadas: Las interfaces marcadas se refieren a interfaces que no tienen ningún método y solo representan ciertos tipos de cosas con un alto grado de abstracción. Por ejemplo, la interfaz Aware es una interfaz de marca típica, que representa la capacidad de la aplicación para percibir (adquirir) un determinado método de aplicación (como ApplicationContextAware, EnvironmentAware, ResourceLoaderAware, MessageSourceAware ...) 2.3 Las interfaces resuelven el problema de la herencia múltiple : Como el
contenedor de la aplicación (ApplicationContext) como entorno de ejecución de la aplicación, debe incluir muchas cosas diferentes, que se pueden unificar a través de la interfaz, como se muestra en la siguiente figura:
Insertar descripción de la imagen aquí

3. Niveles de herencia de clases profunda: es común tener más de 5 niveles y no es raro tener más de 9 niveles (incluidas las interfaces). La ventaja de esto es que es muy consistente con el principio OOD y es fácil de modificar y ampliar; la desventaja es que la complejidad del programa aumenta considerablemente. Los obstáculos de lectura comunes son: la implementación de un método en el medio de la jerarquía de herencia es un cuerpo de método abstracto o vacío, y la implementación específica está en la clase descendiente. En este caso, es necesario encontrar manualmente el cuerpo del método de implementación. Una imagen de ejemplo es la siguiente:
Insertar descripción de la imagen aquí

4. El mecanismo de extensión proporcionado por Spring también lo utiliza el propio marco para la extensión. Por ejemplo, hay muchos puntos de extensión en el proceso de instanciación e inicialización de Bean. Las aplicaciones no solo pueden usar estos puntos de extensión para aprovechar las capacidades del marco, sino que el marco en sí se usa de esta manera. Por ejemplo, en la implementación de BeanDefinition. , el análisis de espacios de nombres estándar (bean) es el predeterminado y los espacios de nombres no estándar (como contexto, aop, etc.) son entradas personalizadas. Diferentes entradas de elementos corresponden a diferentes implementaciones de análisis. Por ejemplo, contexto:annotation-config y contexto:componente -scan corresponde a diferentes implementaciones, el primero corresponde al analizador AnnotationConfigBeanDefinitionParser y el segundo corresponde al analizador ComponentScanBeanDefinitionParser. La ventaja de esto es, por supuesto, que implementa el mecanismo de extensión de manera muy elegante, pero la dificultad es que la legibilidad del programa se reduce considerablemente y es posible que los lectores ni siquiera puedan encontrar el analizador correcto sin rastrearlo y depurarlo. Una imagen de ejemplo es la siguiente:
Insertar descripción de la imagen aquí

Ganancias de aprendizaje

Al leer sistemáticamente el código fuente del marco, se han mejorado las siguientes habilidades:
1. La capacidad de resolver problemas de aplicaciones: a medida que se profundiza la comprensión del marco, se ha mejorado la capacidad de resolver problemas de aplicaciones basadas en el marco.
2. Mejorar las capacidades de diseño: aprender la implementación del marco y explorar las razones del diseño detrás de él puede mejorar su capacidad para diseñar y reconstruir sistemas de aplicaciones.
3. Aprenda un excelente estilo de codificación: básicamente todas las clases, atributos y métodos tienen comentarios, entre los cuales los comentarios de la interfaz son más detallados. Todos los comentarios se ajustan a las especificaciones de JavaDoc.
4. Aprender marcos excelentes puede ampliar los horizontes técnicos de los lectores y experimentar intuitivamente cómo los expertos de la industria resuelven problemas.

En este punto, este estudio ha terminado. Aunque este estudio básicamente entendió cómo se implementa el marco Spring, debido a la energía personal limitada y la complejidad del marco, solo aproximadamente la mitad del código fuente se leyó extensamente y solo una cuarta parte se leyó intensivamente; por la exactitud del código fuente Comprendiendo, no se puede garantizar que la precisión sea del 100%, lo cual debo decir que es una gran lástima.

Supongo que te gusta

Origin blog.csdn.net/davidwkx/article/details/131978738
Recomendado
Clasificación