Spring @Autowired na konstruktorze.

Odpowiedz Nowy wątek
2019-05-06 12:02
0

Od springa 4.3 nie trzeba dodawać adnotacji @Autowired na konstruktorze (jeśli jest jeden w klasie).
Chciałem się zapytać, czy to jakoś poprawia performance aplikacji?
Czy jeśli mamy 20 klas które mają @Autowired na konstruktorze który i tak jest skanowany przez @Service/@Component, to czy to jest jakiś overhead?

Pozostało 580 znaków

2019-05-06 12:07
1

Przede wszystkim - po co zaśmiecać kod? :)


Nie pomagam przez PM. Pytania zadaje się na forum.
Pokaż pozostałe 5 komentarzy
Taka że jak wstrzykujemy w konstruktorze klasy C instancje typów A i B to nie powinno nas interesować specjalnie skąd będa dostarczone te instancje. - scibi92 2019-05-06 12:51
@scibi92 taka idea DI masz rację, natomiast ja tam byłem zwolennikiem dawania tego @Autowired żeby była świadomość że coś tu bedzie wstrzyknięte, bo tak masz obiekt który nie wiesz czy ktoś ma sobie utworzyć czy poprosić kontener; kiedys byłem zwolennikiem takiego uproszczania ale jakoś mi to minęło :P - azalut 2019-05-06 12:52
Niby wszyscy wiedzą, ale zdarza się że nie :D - dargenn 2019-05-06 13:14
dokładnie, @yarel +1 :D - Pinek 2019-05-08 10:22

Pozostało 580 znaków

2019-05-06 23:05
2

W przypadku springa istotne jest nie to, że masz adnotację @Autowired na konstruktorze, ale to, w jaki sposób wstrzykiwane są beany w przypadku wstrzyknięć przez pola. W praktyce spring sprawdza, ile jest konstruktorów w klasie. Jeżeli jest więcej niż jeden, to dopiero wtedy skanuje, pod kątem adnotacji na konstruktorze.

IMO, nie używaj adnotacji @Component i @Autowired. Zamiast tego użyj ich w pliku konfiguracyjnym. Dzięki temu twój kod będzie pozbawiony referencji do springa. Co prawda będziesz musiał trochę więcej napisać, ale migracje, chociażby do testów, będą bajecznie proste.

dlaczego migracje testów będą prostę w przypadku Java Config? - guagg 2019-05-07 08:53
Ponieważ twój kod nie jest zależny od Springa i można nim swobodnie manipulować w trakcie testów. - Koziołek 2019-05-07 11:04

Pozostało 580 znaków

2019-05-07 10:22
0

Nie ma to wpływu na performance, tak czy siak Spring musi przeskanować metody potencjalnego beana.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0