Sobes.tech
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).