
Alex Soto Mendez
PreguntaQue diferencia hay entre crear el constructor y utilizar la anotacion @Autowired?
-
No permite que las instancias sean inmutables (final). Basicamente en tiempo de ejecución tu dependencia inyectada podría tener cambios (de instancia u valores siendo un problema de seguridad). Deberiamos asegurar en lo posible que los objetos se mantengan SIEMPRE como los esperamos. Lo ideal sería declarar las inyecciones así:
private final MyRepository myRepositoryInyected;
-
Facilita romper el principio Single responsability de SOLID. Al inyectar dependencias de esta manera posiblemente se nos pase por alto cuantas dependencias hemos inyectado. Si tenemos muchas dependencias quiere decir que nuestra clase tiene MUCHAS responsabilidades y se debería dividir.
-
Se incrementa el acoplamiento de tu clase al framework. Es decir, tu clase NECESITA del framework para poder funcionar. Si se inyecta por constructor esto sería transparente.
Hernán Antonio Ramírez Osorio
Consejo**
Hernán Antonio Ramírez Osorio
Hola, realmente en cuanto al funcionamiento no existen diferencias, con cualquiera de las inyecciones tu aplicación funcionará igual.
Sin embargo, a pesar de que el @Autowired es una de las formas permitidas por el framework y de hecho la mas elegante, NO es la mas recomendada por la comunidad.. Por varios motivos:
Así que, el concejo sería que en lo preferible utilices dependencias de constructor.

Anderson Martinez Jurado
Hola, supongo que la diferencia es que con @Autowired vas a poder tener un constructor sin atributos en parametros, en cambio sin @Autowired te verias obligado a ingresar todas las variables que necesites inyectar dentro del constructor.
Pero como tal, no hay ninguna diferencia de inyeccion, haciendolo por cada variable a hacerlo en el constructor.