Junior — Middle
Biztosított-e ugyanazon komponens példányának létrehozása, amikor az @Autowired annotációt használjuk egy @Component-nek jelölt osztály különböző részein?
sobes.tech MI
Válasz az MI-től
Igen, amikor a Spring Framework @Autowired annotációját használjuk függőségek injektálására egy @Component-ként megjelölt osztályba, alapértelmezés szerint egy példány jön létre a komponensből (Singleton scope). Ez azt jelenti, hogy ugyanabban a osztályban, ahol ugyanaz a komponens @Autowired-tal injektálva van, ugyanaz a példány lesz használatban.
Például:
@Component
public class MyService {
@Autowired
private MyRepository repo1;
@Autowired
private MyRepository repo2;
public void doSomething() {
// repo1 és repo2 ugyanarra a MyRepository példányra utal
}
}
Így a Spring kezeli a komponensek életciklusát és biztosítja ugyanazon példány újrafelhasználását, kivéve, ha másként van megadva (például az @Scope annotációval).