Jak wstrzykujecie zależności w Springu? Używacie adnotację np. @Service w klasie, którą chcecie wstrzyknąć czy macie klasy z adnotacją @Configuration a w niej metody oznaczone @Bean, które zwracają instancję danej klasy? Wiem, że to drugie podejście jest zgodne z clean architecture, bo wtedy te Springowe konfigurację do wstrzykiwania zależności są w warstwie infrastruktury i nie przeciekają nigdzie indziej, ale z drugiej strony to sporo dodatkowego kodu.
A jeżeli rozwijam wiele aplikacji, gdzie stosowane są różne podejścia, to co mam zaznaczyć? ;)
W drugim podejściu powstaje sporo kodu, ale dzięki temu można programistycznie podstawić jakieś fejkowe/testowe implementacje bez potrzeby hakowania component scana. Sprawdzało się przy hexagonie.
@Configuration
, dzięki czemu reszta kodu nawet nie wie ze gdzieśtam pod spodem jest Spring. Moduł domain
w aplikacji nie ma żadnej zależności od Springa.
Tylko i wyłącznie @Configuration. Wystarczy stracić ze 4 godziny na np. debuggowaniu czemu XML niepoprawnie się parsuje, aby okazalo się, że jakaś zewnętrzna libka (np. Swagger) ma pod spodem @Bean na objectmappera, który jest strasznie dziwacznie skonfigurowany.
Spring ma już wystarczająco za dużo magi. Z resztą takie konfiguracje per moduł super pokazują co tam się faktycznie dzieje.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.