D3xxT3r
#programowanie #spring #java Mirki, dlaczego w Springu najlepszym wyjściem jeżeli chodzi o wstrzykiwanie zależności jest metoda z konstruktorem? I czy np. dobrze jest takie pole oznaczać jako final i z jakiego powodu?
  • Najlepsze
  • Wszystkie komentarze
fegwegw
@D3xxT3r: chodzi o testowalność.

Dobrze jest takie pole zaznaczyć jako final, aby było pewne, że to ma być ustawiane jedynie przez kontener w cyklu życia.
zakopiak
zakopiak
metoda z konstruktorem?


@D3xxT3r: A jak inaczej chcesz to robić?

Setterem? Używanie setterów powoduje, że istnieje możliwość utworzenia obiektu, który będzie miał niepoprawny stan przez brakującą zależność (pomiędzy utworzeniem obiektu, a użyciem settera). To się w OOP nigdy nie powinno zdarzać. Albo trzeba obsługiwać, że zależność może nie być przekazana w każdym miejscu, gdzie jest używana. To jest często
nachteil
alex-fortune
alex-fortune
@zakopiak: już wyjaśnił, dlatego podsumuję: Construtor injection jest jedynym poprawnym sposobem wstrzykiwania zależności i modelowania grafu problemowego. Cała reszta ( wstrzykiwanie przez refleksję/annotacje, wstrzykiwanie przez settery, robienie obiektów w środku ) to mega słabe hacki