Spring @Autowired na konstruktorze.

Spring @Autowired na konstruktorze.
GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
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?

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
1

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

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
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.

damianem
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 205
0

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

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.