Zrozumienie użycia Spring @Autowired

Czytam dokumentację referencyjną z wiosny 3.0.x, aby zrozumieć adnotację Spring Autowired:

3.9.2 @Autowired i @Inject

Nie jestem w stanie zrozumieć poniższych przykładów. Czy musimy coś zrobić w XML, aby działał?

PRZYKŁAD 1

public class SimpleMovieLister {

    private MovieFinder movieFinder;

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

    // ...
}

PRZYKŁAD 2

public class MovieRecommender {

    private MovieCatalog movieCatalog;

    private CustomerPreferenceDao customerPreferenceDao;

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

    // ...
}

W jaki sposób te dwie klasy można automatycznie zaimplementować, wdrażając ten sam interfejs i używając tej samej klasy?

Przykład:

class Red implements Color
class Blue implements Color

class myMainClass{
    @Autowired 
    private Color color;

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

Jaką metodę projektowania nazwiemy? Jak upewnić się, że metoda projektowania klasy czerwonej będzie nazywana, a nie niebieską?

questionAnswers(3)

yourAnswerToTheQuestion