Понимание Spring @Autowired использования

Я читаю справочную документацию по Spring 3.0.x, чтобы понять аннотацию Spring Autowired:

3.9.2 @Autowired и @Inject

Я не могу понять приведенные ниже примеры. Нужно ли что-то делать в XML, чтобы это работало?

Пример 1

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // ...
}

Пример 2

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

    @Autowired
    public void prepare(MovieCatalog movieCatalog,
                    CustomerPreferenceDao customerPreferenceDao) {
        this.movieCatalog = movieCatalog;
        this.customerPreferenceDao = customerPreferenceDao;
    }

    // ...
}

Как можно автоматически связать два класса, реализуя один и тот же интерфейс и используя один и тот же класс?

Пример:

class Red implements Color
class Blue implements Color

class myMainClass{
    @Autowired 
    private Color color;

    draw(){
        color.design(); 
    } 
}

Какой метод проектирования будет называться? Как сделать так, чтобы вызывался метод дизайна класса Red, а не Blue?

Ответы на вопрос(3)

Ваш ответ на вопрос