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:

3.9.2 @Autowired y @Inject

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?

Respuestas a la pregunta(3)

Su respuesta a la pregunta