Kezdőoldal » Számítástechnika » Programozás » Spring Boot dependency injection?

Spring Boot dependency injection?

Figyelt kérdés

private Service service;


@Autowired

public void setService(Service service){

this.service = service;

}


ez a setter tulajdonképpen a meglévő Service Objektumot állitja be az osztályváltozóba?

Tehát nem jön létre új hanem a meglévőt allitja be?

Ja és pontosan az @Autowired annotáció miért kell a setter felé?


2018. júl. 30. 19:26
 1/2 anonim ***** válasza:

Igen, alapból a Spring minden beant singletonként hoz létre, azaz csak egy példányban. De vannak egyéb scope-ok, viszont ezt jelezned kell a Spring felé hogy valamiből többet hozzon létre, pl prototype. Viszont erre nagyon ritkán van szükség.



Illetve a setter injection veszélyes, lehetséges, hogy null-t kapsz ha nem talált olyan típusú beant. Jobb praktika minden függőséget a konstruktorban beinjenktalni.


Az autowired ahhoz kell hogy jelezd a springben, ide köss be nekem egy ilyen típusú beant. Viszont jobb praktika az is, hogy ha újabb verziójú springet használsz hogy minden példányváltozót finalre állítod és csinálsz egy db konstruktort, ami beállítja az összeset. Ebben az esetben el tudod hagyni az autowired annotaciot mert a Spring magától kitalálja, hogy ide bizony te be akarod injectalni a dependency-ket. Csak annotald fel az osztályt service vagy component annotacioval.


Bocsi az írási hibákért.

2018. júl. 31. 07:56
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:
Köszi,érthető tökéletes válasz.
2018. júl. 31. 10:59

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!