que notacion inyecciones inyeccion funcion ejemplo dependencias dependencia context bean autowire annotation spring spring-boot dependency-injection autowired

notacion - Spring inyecta dependencias en el constructor sin anotación @Autowired



que es un bean en spring (1)

Estoy experimentando con ejemplos de estos tutorials oficiales de Spring y hay una dependencia en este código:
https://github.com/spring-guides/gs-async-method/tree/master/complete

Si miras el código en la clase AppRunner.java , tengo 2 problemas:

1) Cuando el servidor se está iniciando, si coloco un punto de interrupción en el constructor de esta clase, parece que en el constructor, el GitHubLookupService lo proporciona Spring, utilizando el bean @Service que se configuró. PERO, no había una anotación @Autowired en el constructor, así que, ¿cómo en el mundo se llama a este constructor con la dependencia correcta? Se suponía que era null .

¿Es un supuesto automático de Spring Boot ?
¿Spring ve "el campo privado + el argumento del constructor, y asume que debería buscar un bean apropiado?
¿Es Spring Framework o Spring Boot ?
¿Me estoy perdiendo de algo?

2) Como recuerdo, fue obligatorio proporcionar el constructor predeterminado a beans / service, etc. ¿Por qué esta clase (AppRunner) no tiene un constructor predeterminado? ¿Cómo sabe Spring que debe ejecutar el constructor con el argumento? ¿Es porque es el único constructor?


Comenzando con Spring 4.3 , si una clase, que está configurada como un bean Spring, tiene solo un constructor, la anotación Autowired puede omitirse y Spring utilizará ese constructor e inyectará todas las dependencias necesarias.

Con respecto al constructor predeterminado : o necesita el constructor predeterminado, un constructor con la anotación Autowired cuando tiene varios constructores, o solo un constructor en su clase con o sin la anotación Autowired .

Lea el capítulo "@Autowired" de la documentación oficial de Spring para obtener más información.