Vamos aprender juntos a série de frameworks SF - Resumo de aprendizado do código-fonte do Springframework

processo de aprendizado

O aprendizado do Springframework 6.0.8 levou quase 4 meses e finalmente terminou. O conteúdo principal da aprendizagem é mostrado na figura (caixa vermelha):
Insira a descrição da imagem aqui

Este estudo concentra-se principalmente nos módulos principais: Beans, Context, Core, SpEL (completamente independente do framework, sem estudo aprofundado), AOP, tomando o processo de inicialização de aplicações SF como eixo, e tem uma compreensão mais profunda do Spring's injeção de dependência de tecnologias principais, eventos, recursos, i18n, validação, vinculação de dados, conversão de tipo, SpEL, AOP.

Resumo dos métodos de aprendizagem

1. Adote principalmente o método de rastreamento de aplicativos, ou seja, escreva o aplicativo mais simples e, em seguida, use a inicialização ClassPathApplicationContext do contêiner do aplicativo como ponto de partida para rastrear todo o processo de inicialização: inicialização do contêiner, carregamento de recursos, carregamento de definições de Bean e inicialização de Bean; ao mesmo tempo, combine o processo de inicialização com diversas tecnologias. Clique para começar e acompanhe como implementar a tecnologia específica. Pessoalmente, acho que a característica mais eficaz deste método é a sua implementação e verificação de resultados, o que ajuda a compreender o framework.
2. Apenas olhar o código-fonte durante o processo de aprendizagem não é suficiente, você também precisa fazer o seguinte:
2.1 Usar ferramentas UML para desenhar diagramas de classes, para que seja fácil estabelecer uma impressão geral dos pontos relevantes.
2.2 Desenhe diagramas de tempo dos principais processos para ajudar a esclarecer o processo de execução e as relações de salto.
2.3 Faça anotações, que podem ser na forma de documentos ou blogs. Em particular, os comentários linha por linha no código-fonte são muito úteis para a compreensão da estrutura.
2.4 Leia repetidamente e revise o que você fez em 2.1-2.3.
2.5 Persistência: Ler o código fonte será muito incômodo no início. Os saltos constantes parecem entrar em um labirinto. Somente a persistência pode resolver o problema.

Resumo de compreensão do Springframework

1. Springframework foi desenvolvido para 6.0.8, e a complexidade do sistema é muito alta, como pode ser visto pelo número de classes:
Beans: 313 classes
Contexto: 517 classes
Core: 634 classes
SpEL: 110 classes
AOP: 203 classes

2. Spring fornece recursos de geração de dependência, e sua própria estrutura também insiste na geração de dependência: interface primeiro. Seus benefícios específicos são os seguintes:
2.1 Interface primeiro, que é o mecanismo básico para que a estrutura forneça capacidades de expansão. As extensões podem não permitir que os aplicativos intervenham ou usem os recursos do quadro enquanto oferecem suporte a extensões do próprio quadro.
2.2 Uso de interfaces marcadas: Interfaces marcadas referem-se a interfaces que não possuem nenhum método e representam apenas certos tipos de coisas com alto grau de abstração. Por exemplo, a interface Aware é uma interface de marca típica, que representa a capacidade do aplicativo de perceber (adquirir) um determinado método de aplicativo (como ApplicationContextAware, EnvironmentAware, ResourceLoaderAware, MessageSourceAware...) 2.3 Interfaces resolvem o problema de herança múltipla : como o
contêiner do aplicativo (ApplicationContext) como o ambiente de execução do aplicativo, precisa incluir muitas coisas diferentes, que podem ser unificadas por meio da interface, conforme mostrado na figura abaixo:
Insira a descrição da imagem aqui

3. Níveis profundos de herança de classe: é comum ter mais de 5 níveis e não é incomum ter mais de 9 níveis (incluindo interfaces). A vantagem disto é que é muito consistente com o princípio OOD e é fácil de modificar e estender; a desvantagem é que a complexidade do programa aumenta bastante. Obstáculos comuns de leitura são: a implementação de um método no meio da hierarquia de herança é um corpo de método abstrato ou vazio, e a implementação específica está na classe descendente.Neste caso, você precisa encontrar manualmente o corpo do método de implementação. Uma imagem de exemplo é a seguinte:
Insira a descrição da imagem aqui

4. O mecanismo de extensão fornecido pelo Spring também é usado pelo próprio framework para extensão. Por exemplo, existem muitos pontos de extensão no processo de instanciação e inicialização do Bean. Os aplicativos não apenas podem usar esses pontos de extensão para aproveitar os recursos da estrutura, mas a própria estrutura é usada dessa maneira. Por exemplo, na implementação de análise do BeanDefinition , a análise de namespace padrão (bean) é o padrão e Namespaces não padrão (como context, aop, etc.) são entradas personalizadas. Diferentes entradas de elementos correspondem a diferentes implementações de análise. Por exemplo, context:annotation-config e context:component -scan corresponde a diferentes implementações. O primeiro corresponde ao analisador AnnotationConfigBeanDefinitionParser, e o último corresponde ao analisador ComponentScanBeanDefinitionParser. A vantagem disso é, claro, que ele implementa o mecanismo de extensão de maneira muito elegante. A dificuldade é que a legibilidade do programa é bastante reduzida. Os leitores podem nem conseguir encontrar o analisador correto sem rastrear e depurar. Uma imagem de exemplo é a seguinte:
Insira a descrição da imagem aqui

Ganhos de aprendizagem

Ao ler sistematicamente o código-fonte do framework, as seguintes habilidades foram aprimoradas:
1. A capacidade de resolver problemas de aplicação: Com o aprofundamento da compreensão do framework, a capacidade de resolver problemas de aplicação com base no framework foi melhorada.
2. Melhorar as capacidades de design: Aprender a implementar a estrutura e explorar as razões de design por trás dela pode melhorar sua capacidade de projetar e reconstruir sistemas aplicativos.
3. Aprenda um excelente estilo de codificação: basicamente todas as classes, atributos e métodos possuem comentários, entre os quais os comentários da interface são mais detalhados. Todos os comentários estão em conformidade com as especificações JavaDoc.
4. Aprender estruturas excelentes pode expandir os horizontes técnicos dos leitores e experimentar intuitivamente como os especialistas do setor resolvem problemas.

Neste ponto, este estudo terminou. Embora este estudo tenha entendido basicamente como a estrutura Spring é implementada, devido à energia pessoal limitada e à complexidade da estrutura, apenas cerca de metade do código-fonte foi lido extensivamente e apenas um quarto foi lido intensivamente; para a exatidão do código-fonte entendendo, a precisão não pode ser garantida como 100%, o que devo dizer é uma grande pena.

Acho que você gosta

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