Notas de código-fonte avançadas do Spring: análise abrangente do processo de criação da BeanFactory da implementação do código que o acompanha!

Um, obtenha o subprocesso BeanFactory

O diagrama de tempo é o seguinte


Este artigo faz referência a "Spring Advanced Source Notes", alunos que precisam adicionar assistente VX: C18173184271 acesso gratuito

Artigo de destaque da entrevista de primavera clique aqui! ! !

Dois, análise de carregamento BeanDefinition e subprocesso de registro

1. Este subprocesso envolve as seguintes etapas principais

Posicionamento de recursos : refere-se ao BeanDefinitionprocesso correto de posicionamento de recursos. De modo geral, é para localizar Javabeano arquivo XML que define as informações e encapsulá-lo em um objeto Resource .

Carregamento de BeanDefinition : a estrutura de dados definida pelo usuário é Javabeanrepresentada como a estrutura de dados interna do contêiner IoCBeanDefinition .

Registrar BeanDefinition no contêiner IoC

2. Análise de processo

1 a ETAPA : AbstractRefreshableApplicationContext#refreshBeanFactorymétodo de entrada do subprocesso na

Etapa 2 : turn chamar mais de uma classe do método loadBeanDefinitions -> AbstractXmlApplicationContext-> AbstractBeanDefinitionReader-> XmlBeanDefinitionReaderrealizada até XmlBeanDefinitionReadero método doLoadBeanDefinitions da

Etapa 3 : Focamos na XmlBeanDefinitionReaderclasse de observação que o método registerBeanDefinitions produz durante tempos de carregamento pesado chamada, localizamos o último

aqui nos concentramos em duas áreas: um método createRederContext , é uma DefaultBeanDefinitionDocumentReaderclasse do método registerBeanDefinitions , primeiro digite o método createRederContext, veja

que podemos ver que aqui o Spring terminou a primeira NamespaceHandlerResolverinicialização.

Em seguida, inserimos o método registerBeanDefinitions para rastrear e chamar o método DefaultBeanDefinitionDocumentReader # registerBeanDefinitions.

Insira o método doRegisterBeanDefinitions.

Insira o método parseBeanDefinitions.

Insira o método parseDefaultElement.

Insira o método processBeanDefinition.

Neste ponto, o processo de registro acabou. BeanDefinitionapós o objeto em um mapa, com BeanFactorybase na Maporganização estrutural destes BeanDefinitionsão.

Você pode DefaultListableBeanFactoryver a definição deste mapa em

/** Map of bean definition objects, keyed by bean name. */
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

3. Diagrama de tempo

Se você precisa desta versão completa de "Spring Advanced Source Notes", você só precisa apoiar meu artigo.

Muito suporte, você pode obter informações gratuitamente, após três anos consecutivos (promessa: 100% gratuito)

Canal de início rápido: Adicionar assistente VX: C18173184271 Obtenha-o gratuitamente! Cheio de sinceridade! ! !

Artigo de destaque da entrevista de primavera clique aqui! ! !

Acho que você gosta

Origin blog.csdn.net/Java_Caiyo/article/details/112954635
Recomendado
Clasificación