Wpis z mikrobloga

niem coraz bardziej przekonuje się że


@dupogisaga: definiujesz klasy jako komponenty, spring je automatycznie tworzy i udostepnia podczas runtime jako tzw "beany". zarządza ich "życiem". jest to bardzo wygodne rozwiązanie bo nie musisz się martwić tworzenie nowych instancji itp...
@SharkyShark: Jak najbardziej mogę rozszerzyć myśl. No więc przede wszystkim odnosiłem się do mechanizmu Spring DI, a niekoniecznie do samego Springa (aczkolwiek jego fanem również nie jestem). To dlatego że ten mechanizm jest oparty o runtime reflection, a więc graf zależności jest budowany dopiero w czasie działania aplikacji. To z kolei jest źródłem kilku poważnych problemów:
* nie jesteś w stanie w łatwy sposób zobaczyć jak wygląda graf zależności Twojej aplikacji
@zajety_login: Ogólnie dla DI, aby wyeliminować:

* często prowadzi do tight couplingu pomiędzy komponentami (bo w dowolnym miejscu w swoim kodzie możesz wstrzyknąć dowolną inną zależność)

* nie jesteś w stanie w łatwy sposób zobaczyć jak wygląda graf zależności Twojej aplikacji
@panczekolady: Podejście, które moim zdaniem się sprawdza, to ręczne budowanie grafu zależności. Masz jakieś jedno miejsce w aplikacji, w którym inicjalizujesz wszystkie niezbędne komponenty do działania. Dzięki temu masz pełny wgląd w to co jest inicjalizowane i gdzie jest przekazywane. Do tego masz pełne wsparcie kompilatora, który nie pozwoli żebyś zapomniał o przekazaniu jakiejś zależności. Ponadto sprawia że bardziej pilnujesz się z tym gdzie trafia jakaś zależność, i czy przypadkiem nie