Avalados por :

Descobrindo a varredura automática de componentes no Spring Framework

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...
No arquivo de configuração xml do Spring, podemos definir um pacote para a tag component-scan, que indica ao framework do Spring buscar todas as classes dentro desse pacote especificado, procurando por classes anotadas com @Named ou @Component.


Estou muito intrigado sobre como o framework Spring realiza essa varredura, então fiz algumas depurações para descobrir.


Neste blog Como encontrar a localização exata onde o arquivo de configuração de beans é analisado no framework Spring Já encontrei a localização onde o arquivo de configuração xml é analisado pelo framework Spring, então posso definir um ponto de interrupção diretamente no código fonte encontrado.


Aqui o pacote a ser varrido é analisado a partir do arquivo xml:



E a varredura real é feita na linha 87:



Aqui todas as classes dentro do pacote especificado e seus subpacotes são extraídos como recursos, agora tenho 7 recursos como candidatos para a varredura, o que faz sentido pois tenho um total de 7 classes no pacote:




A avaliação para verificar se a classe possui uma anotação qualificada é feita neste método:



Se a classe varrida tiver pelo menos uma anotação (a anotação escrita na classe é armazenada em metsadataReader) que está em this.includeFilters, então é considerada como candidata.



Ao inspecionar o conteúdo de this.includeFilters, podemos saber que o framework Spring considera @Component e @Named como anotações qualificadas para a lógica de varredura automática de componentes.




Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?