Zrozumienie użycia Spring @Autowired
Czytam dokumentację referencyjną z wiosny 3.0.x, aby zrozumieć adnotację Spring Autowired:
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ą?