Cześć,
nie dawno zacząłem uczyć się springa, ale coś nie mogę zrozumieć koncepcji automatycznego skanowania i auto łączenia. Mam taki przykład. Jest sobie rycerz, który może wykonać misję np. zabić smoka. W wiązaniu jawnym wgląda to tak:
public interface Knight {
void embarkOnQuest();
}
public interface Quest {
void embark();
}
public class BraverKnight implements Knight {
private Quest quest;
public BraverKnight(Quest quest) {
this.quest = quest;
}
public void embarkOnQuest(){
quest.embark();
}
}
public class SlayDragonQuest implements Quest {
private PrintStream stream;
public SlayDragonQuest(PrintStream stream) {
this.stream = stream;
}
public void embark() {
stream.println("Embarking on quest to slay the dragon");
}
}
@Configuration
public class KnightConfig {
@Bean
public Knight knight(){
return new BraverKnight(quest());
}
@Bean
public Quest quest(){
return new SlayDragonQuest(System.out);
}
}
public class KnightMain {
public static void main(String[] args) throws Exception{
ApplicationContext context = new AnnotationConfigApplicationContext(KnightConfig.class);
BraverKnight knight = context.getBean(BraverKnight.class);
knight.embarkOnQuest();
}
}
Chciałbym teraz przerobić to na auto wiązanie, więc dodaję do klasy konfiguracyjnej adnotację @ComponentScan. Rozumiem też, że moimi komponentami są klasy BraverKnight oraz SlayDragonQuest, więc im dodaję adnotację @Component, ale teraz nie do końca już rozumiem o co chodzi z tym auto wiązaniem, jak to powinienem zrobić? Dodać do ww. konstruktorów adnotację @Autowired? A co później z tymi Beanami w klasie konfiguracyjnej?
Zapytam się też od razu czy można w Spring core za symulować sobie zwykła aplikację javy? Np. mamy aplikację, która pobiera od użytkownika bok kwadratu i liczy jego pole.