#7 Spring Boot 2 – Lazy Loading – szybsze ładowanie aplikacji

Kolejna nowa funkcjonalność/usprawnienie, która udostępniona będzie w wersji 2.2.0 frameworku Spring Boot 2 dotyczyć będzie szybszego startowania aplikacji. Autorzy Spring’a dostarczyli nowy wpis, który można umieścić w pliku application.properties. Wpis ten sprawi, iż nasza aplikacja będzie uruchamiać się szybciej. Zapraszam do lektury, aby dowiedzieć się co to za nowy wpis!

Lazy Initialization

Spring Boot słynie z tego, iż dostarcza całą game autokonfiguracji związanych z różnymi integracjami. Powoduje to, iż na classpathie znajdują się ogromne ilości klas, które muszą być zweryfikowane i zainicjalizowane. Proces ładowania tych klas może bardzo wydłużyć uruchamianie aplikacji.

Beany w Spring’u domyślnie są ładowane w momencie startu aplikacji (są oznaczone jako eager). Jednakże, nie wszystkie beany od razu są nam potrzebne. Aby przyśpieszyć proces możemy odroczyć ładowanie (i tworzenie) beanów do momentów kiedy rzeczywiście będą nam potrzebne. Jest to tak zwane leniwe ładowanie (które realizowane jest w Spring’u za pomocą adnotacji @Lazy).

W Spring Boot 2 w wersji 2.2.0 pojawił się nowy wpis, który można dodać do pliku application.properties:

spring.main.lazy-initialization=true

Sprawia on, że wszystkie beany stają się leniwie, co może znacznie przyśpieszyć ładowanie aplikacji. Należy jednak pamiętać o tym, że jeśli nasza logika biznesowa uruchamiana była w konstruktorze beana, to zostanie ona wykonana dopiero w trakcie jego pierwszego wykorzystania!

  • Kamil Gregorczyk

    Lazy init nie jest dobrym rozwiązaniem, bo o błędzie w aplikacji dowiemy się dopiero kiedy zostanie użyta a nie kiedy serwer startuje, dlatego ważne jest “fail fast”. Spring zamiast się odchudzać i upraszczać to dodaje takie słabe rozwiązania żeby dogonić konkurencje 😉

    • grzegorz18181

      Może by się to przydało w testach gdzie odpalam kontekst springowy