No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Inyecci贸n de dependencia "Component"

11/31
Recursos

Aportes 24

Preguntas 38

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Tambi茅n funciona inyectar una dependencia con solo la instancia de la interfaz y agreg谩ndole las anotaciones pertinentes, sin tener que usar un m茅todo constructor:

@Autowired
	@Qualifier("componentTwoImplement")
	private ComponentDependency componentDependency;

En la versi贸n 2.6.3 de Spring, se puede agregar la etiqueta @Primary a la implementaci贸n que queramos utilizar, y esta se tomar谩 como la principal.

Estoy entendiendo nadita鈥

el profesor sabe mucho, pero no sabe ense帽ar.

En este caso prefiero youtube
https://www.youtube.com/watch?v=7vHzVN0EiQc

Si te lleg贸 aparecer este error:

Esta es la soluci贸n, da clic donde dice 鈥淥pen project settings.鈥 y te aparecer谩 la siguiente ventana:

En 鈥淪DK鈥 dar谩s clic en la lista desplegable, clic en 鈥+ Add SDK鈥 y en 鈥淒ownload JDK鈥.

Dar谩s clic en la lista desplegable de 鈥淰ersion鈥 y clic en la opci贸n 鈥17鈥 (en el caso que te haya aparecido 17 como en la primera imagen).

Dar谩s clic en el bot贸n 鈥淒ownload鈥.

Clic en el bot贸n 鈥淥k鈥.

En la parte de abajo a la derecha aparecer谩 un mensaje que se esta descargando o instalando la versi贸n.

Una vez instalado, vas al archivo FundamentosApplication.java, clic derecho y clic en la opci贸n que diga al principio 鈥淩un鈥 como se ve en la imagen.

Para terminar, te aparecer谩 en la consola el mensaje que pusiste en el m茅todo saludar();

No me marco el error del final pero igual agregue la anotacion de 鈥淍Qualifier鈥 y funciono como en el video, aun que algunas personas en los comentarios dice que puedes usar @Primary

@Autowired es muy imporante al momento de autocablear nuestras soluciones, es cierto que hoy dia no es tan recomendada para nuestros proyectos, pero la verdad la idea es hacer el c贸digo menos verboso y esto simplifica much铆simo el c贸digo fuente.
Por otra parte, @Qualifier: es una anotaci贸n que sirve para especificar el tipo de dependencia se esta inyectando con la funcionalidad de diferenciar nuestras abstracciones o uso de clases que implementan una misma interfaz (Seg煤n el principio SOLID) porque si usamos concreciones no seria util usar Qualifiers en la mayor铆a de los casos.

Gracias por la clase. Personalmente, me gusta el Autowired porque no tengo que inferir que esta pasando mientras leo el codigo. Siento que a medida que crece el repositorio, lo hace mas legible.

Lo 煤nico que no me gusta del curso es que siento que Michael hace las cosas como al rev茅s y eso puede confundir un poco a las personas, es decir, primero implementa una interface y despu茅s la crea y as铆 con otras cosas鈥

Esta clase me gusto.

Esta parte me pareci贸 super confusa reci茅n empec茅 con spring, este tipo lo explico soberbio

La anotaci贸n @qualifier define una preferencia cuando hay varios beans del mismo tipo.

@Autowired indica de forma expl铆cita la necesidad de inyectar una dependencia en Spring. Hay casos en que esta anotaci贸n por s铆 sola no es suficiente para que Spring comprenda qu茅 bean debe inyectar, este problema lo resuelve la anotacion @qualifier.

Uy, no sabia que el @autowired ahora es opcional

Lo que veo redundante es que al hacer un contructor directamante estamos inyectando la dependencia, no es que Spring lo haga automaticamante sin colocar la anotacion @Autowired, en caso de que no iniciemos la dependencia con algun metodo constructor si o si debemos usar @Autowired ya que es la manera como spring nos ayuda a inyectar esa dependencia.

Hola si usan Lombok, pueden poner esta anotaci贸n sin necesidad de usar crear el constructor

@SpringBootApplication
**@RequiredArgsConstructor**
public class FundamentosApplication implements CommandRunner {

	private final ComponentDependency componentDependency;
...........
...........
...........

}

M谩s de Lombok:
https://projectlombok.org/features/constructor
https://projectlombok.org/features/all

Otra opci贸n que pueden usar es poner el nombre de la dependencia que desean usar en la variable que crean y en el constructor y ya spring sabe que bean usar

private ComponentDependency componentTwoImplement;

	public FundamentosApplication(ComponentDependency componentTwoImplement){
		this.componentTwoImplement = componentTwoImplement;
	}

	public static void main(String[] args) {
		SpringApplication.run(FundamentosApplication.class, args);
	}

	@Override
	public void run(String... args) throws Exception {
		componentTwoImplement.saludar();
	}

En windows, si quieres agregar el constructor de forma mas sencilla, despues de declarar ComponentDependency presiona la combinaci贸n de teclas Alt + insert, te aparacer谩 un recuadro y seleccionas 鈥榗onstructor鈥, enseguida se mostrar谩 otro recuadro con los campos que puedes agregar al constructor, en este caso solo aparecer谩 el de componentDependency, lo seleccionas, le das enter y listo!! el constructor se genera autom谩ticamente.

totalmente perdido 馃槮

claramente Platzi debe hacer una actualizaci贸n de los cursos鈥

Para poner

System.out.println();

m谩s r谩pido solo escriban

sout

y luego la tecla tabular.

se implementa una interfas(Tiene un metodo saludar) en una clase, en esa clase se hace la logica de negocio y se inyercata esa dependica a la clase principal para poder hacer algo con ella, como implementar interfaces grafica que me muestre el saludo.

Cuando tenemos dos dependencias del mismo tipo (como en este caso, 2 clases que implementan la misma Interface) al momento de realizar la inyeccion de la dependencia debemos especificar con @Qualifier que tipo de objeto inyectar. @Qualifier se puede usar en combinacion con @Autowired.

Entender esta clase es entender Spring, que buena explicaci贸n