Entendiendo el uso de Spring @Autowired
Estoy leyendo la documentación de referencia de Spring 3.0.x para comprender la anotación de Autowired de Spring:
No puedo entender los ejemplos a continuación. ¿Necesitamos hacer algo en el XML para que funcione?
EJEMPLO 1
public class SimpleMovieLister {
private MovieFinder movieFinder;
@Autowired
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
Ejemplo 2
public class MovieRecommender {
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public void prepare(MovieCatalog movieCatalog,
CustomerPreferenceDao customerPreferenceDao) {
this.movieCatalog = movieCatalog;
this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}
¿Cómo se puede auto cablear las dos clases implementando la misma interfaz y usando la misma clase?
Ejemplo:
class Red implements Color
class Blue implements Color
class myMainClass{
@Autowired
private Color color;
draw(){
color.design();
}
}
¿Qué método de diseño se llamará? ¿Cómo me aseguro de que se llame al método de diseño de Red class y no a Blue?