Kurs Java

Co nowego w Spring Boot 2.6?

Kilka dni temu (19 listopada) kolejna wersja Spring Boot-a ujrzała światło dzienne. Tym razem jest to wersja 2.6, która co prawda nie wprowadza nic rewolucyjnego, ale jednak kilka ciekawych nowości można w niej znaleźć. Zresztą ciężko mówić o rewolucji, skoro to jedynie kolejna z "drugich" wersji. Na coś większego przyjdzie nam poczekać zapewne do Spring Boot-a 3, którego premiera spodziewana jest w czwartym kwartale przyszłego roku. Obecnie mamy jednak wersję 2.6, a więc skupmy się na tym, co jest teraz i zobaczmy, co nowego pojawia się w ramach tej aktualizacji.

Spring Boot 2.6 - Listopad 2021

  • Nowa wersja Spring Security

    Razem ze Spring Boot 2.6 dostarczone zostało Spring Security 5.6.
  • Nowa wersja Spring Data

    Spring Data zostało zaktualizowane do wersji Spring Data 2021.1
  • Nowe wersje poniższych rozwiązań
    • Spring HATEOAS 1.4
    • Spring AMPQ 2.4
    • Spring Kafka 2.8
    • Spring Session 2021.1
  • Wsparcie dla atrybutu SameSite

    Atrybut SameSite może być używany przez przeglądarki internetowe do kontrolowania, czy i w jaki sposób pliki cookie są przesyłane w żądaniach http. Atrybut jest szczególnie istotny w przypadku nowoczesnych przeglądarek internetowych, które zaczęły zmieniać domyślną wartość używaną w przypadku braku atrybutu.

    Od teraz można skonfigurować atrybut SameSite ciasteczka sesyjnego za pomocą właściwości server.servlet.session .cookie.same-site. Działa to z automatycznie konfigurowanymi serwerami Tomcat, Jetty i Undertow. Na przykład, jeśli chcesz, aby cookie sesji miał atrybut SameSite równy None, możesz dodać następujący wpis do pliku application.properties lub application.yaml:
    server.servlet.session.cookie.same-site=none
    
    Jeśli chcesz zmienić atrybut SameSite w innych cookies dodanych do HttpServletResponse, możesz użyć CookieSameSiteSupplier. Dodanie następującego beana spowoduje automatyczne zastosowanie SameSite dla wszystkich plików cookie o nazwie zgodnej z wyrażeniem regularnym myapp.*:
    @Configuration(proxyBeanMethods = false)
    public class MySameSiteConfiguration {
    
        @Bean
        public CookieSameSiteSupplier applicationCookieSameSiteSupplier() {
            return CookieSameSiteSupplier.ofLax().whenHasNameMatching("myapp.*");
        }
    
    }
    
  • Java Runtime Information w endpoincie /info

    W endpoincie info (widocznym np. z poziomu actuatora) są od teraz udostępniane informacje o Javie (klucz Java):
    {
      "java": {
        "vendor": "BellSoft",
        "version": "17",
        "runtime": {
          "name": "OpenJDK Runtime Environment",
          "version": "17+35-LTS"
        },
        "jvm": {
          "name": "OpenJDK 64-Bit Server VM",
          "vendor": "BellSoft",
          "version": "17+35-LTS"
        }
      }
    }
    
    Działa to dopiero po ustawieniu własności management.info.java.enabled na true.
  • Właściwości sesji reaktywnych serwerów (reactive servers)

    W tym wydaniu rozszerzono właściwości sesji serwerów reaktywnych (wcześniej pod spring.webflux.session). Nowe właściwości są dostępne w server.reactive.session i oferują teraz zgodność z wersjami serwletów.
  • Wykluczenia build-info.properties

    Od teraz możliwe jest wykluczenie dodawania określonych właściwości do pliku build-info.properties generowanego przez wtyczki Spring Boot Maven lub Gradle. Użytkownicy Maven mogą wykluczyć standardowe właściwości grupy, artefaktu, nazwy, wersji lub czasu za pomocą tagu <excludeInfoProperties>. Na przykład, aby wykluczyć właściwość version, można użyć następującej konfiguracji:
    <configuration>
        <excludeInfoProperties>
            <excludeInfoProperty>version</excludeInfoProperty>
        </excludeInfoProperties>
    </configuration>
    
    Użytkownicy Gradle'a mogą użyć null-a w bloku properties w DSL-u:
    task buildInfo(type: org.springframework.boot.gradle.tasks.buildinfo.BuildInfo) {
        destinationDir project.buildDir
        properties {
            version = null
        }
    }
    
  • Nowe metryki w ramach autokonfiguracji

    Automatyczna konfiguracja udostępnia dwie metryki związane z uruchamianiem aplikacji:
    • application.started.time, czyli czas potrzebny na uruchomienie aplikacji
    • application.ready.time, czyli czas potrzebny na przygotowanie aplikacji do obsługi zgłoszeń

    Także metryki DiskSpaceMetrics są autokonfigurowane. Dla partycji identyfikowanej przez bieżący katalog roboczy dostępne są metryki disk.free i disk.total.
Jak widać, nowa wersja Spring Boot-a nie zawiera zmian, które znacząco wpływają na implementacje kodu. Na pewno warto zwrócić uwagę na aktualizacje Spring Security i Spring Data, a konkretnie, czy ich wprowadzenie nie spowoduje problemów podczas kompilacji lub uruchamiania działającego dotychczas projektu. Ciekawym zagadnieniem wydaje się również możliwość kontroli atrybutu SameSite oraz wprowadzenie nowych metryk.

Oczywiście zmian jest nieco więcej i choć w moim odczuciu są one niszowe lub bardzo specjalistyczne to — jak zawsze — zachęcam do odwiedzenia linków (pod artykułem), które zawierają pełną listę zmian.
Autor: Jarek Klimas
Data: 26 listopada 2021
Labele:Backend, Poziom podstawowy, Spring, Spring Boot Linki:
https://spring.io/blog/2021/11/19/spring-boot-2-6-is-now-available
https://github.com/.../Spring-Boot-2.6-Release-Notes#new-and-noteworthy
Masz swoje przemyślenia na temat artykułu? Podziel się nimi!
Masz pytanie odnośnie zagadnienia omawianego w artykule?
Coś, co napisaliśmy, nie zaspokoiło Twojego głodu wiedzy?
Daj nam znać co myślisz i skomentuj artykuł na facebooku!

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE