Suche
Stiefel schnüren für bessere Performance

Spring Boot 2.1 ist da: Die neuen Features in der Übersicht

Dominik Mohilo

© Shutterstock / 5 second Studio

Spring Boot, das Konvention-vor-Konfiguration-Framework, erfreut sich anhaltender Beliebtheit in der Entwicklergemeinde. Bei der neuen Version Spring Boot 2.1 stand diesmal die Verbesserung der Performance im Fokus, aber auch Themen wie die Unterstützung von Java 11 und ein Update der Bibliotheken von Drittanbietern sind Teil des Updates.

Mit Spring Boot 2.0 endete die 1.5er-Release-Reihe des Frameworks, die lange Zeit den Standard für das Erstellen eigenständig lauffähiger Spring-basierter Anwendungen darstellte. Mit dem nun veröffentlichten Spring Boot 2.1 wurden, neben den aktuellen Neuerungen und Verbesserungen, auch personell wieder Meilensteine erreicht: Das Projekt zählt nun über 500 Committer, die in Form von mehr als 19.000 Commits zum Projekt beitrugen.

Spring Boot 2.1 – Das ist neu

Java 11, Java 8 und Dependencys

Wie gewohnt bringt Spring Boot auch diesmal wieder eine Reihe von Updates für Bibliotheken von Drittanbietern. Damit ergeben sich neue Abhängigkeiten, zu folgenden Projekten:

  • Hibernate 5.3
  • Micrometer 1.1
  • Reactor Californium
  • Spring Data Lovelace
  • Spring Framework 5.1
  • Tomcat 9
  • Undertow 2

In Spring Boot 2.1 stand besonders die Performance im Fokus der Entwickler, die an dieser Stelle große Verbesserungen versprechen. Anwendungen sollen deutlich schneller starten und dabei weniger Speicher verbrauchen, was logischerweise gerade auf Systemen mit einem sehr eingeschränkten Speicherpotential vorteilhaft sein dürfte. Hibernate kann mit der aktualisierten Version des Frameworks jetzt auch Hibernate asynchron bootstrappen. Diese Funktion ist bereits aus dem Spring Framework und Spring Data JPA bekannt.

Die Unterstützung von Java 11 ist keine große Überraschung. Spring selbst unterstützt Java 11 bereits seit Version 5.1 und da Spring Boot 2.1 auf eben dieser Version aufsetzt, war diese Funktion eigentlich zu erwarten. Interessanter für viele unserer Leser dürfte allerdings sein, dass Spring Boot auch mit der neuen Version mit Java 8 kompatibel bleibt.

DataSize, Aktoren und Metriken

Spring Boot 2.0 brachte den Duration-Support, Spring Boot 2.1 hat DataSize-Support an Bord. Sollte es für eine Property nötig sein, eine Einheit in Verbindung mit einer bestimmten Größe auszudrücken, kann eine Property org.springframework.util.unit.DataSize ausgestellt werden. Dies ermöglicht die Spezifizierung einer Einheit bei der Konfiguration eines Wertes in application.properties.

Neu sind auch zwei neue Aktoren-Endpunkte: /actuator/caches und /actuator/integrationgraph. caches gibt dabei Informationen über die Cache-Manager der Anwendung aus, während integrationgraph eine graphische Repräsentation von Komponenten der Spring-Integration verfügbar macht. Der Endpunkt health wurde ebenfalls verbessert. So ist es nun möglich, den Zustand einer individuellen Komponente abzufragen.

Dass Spring Boot 2.1 die Abhängigkeit zu Micrometer auf dessen Version 1.1 beinhaltet, wurde oben bereits erwähnt. Zusätzlich wurde auch die automatische Konfiguration für den Export von Metriken an AppOptics, Humio und KariosDB hinzugefügt. Die Metriken folgender Tools werden in der neuen Spring-Boot-Version ebenfalls abgedeckt:

  • Hibernate
  • WebClient (Spring Framework)
  • Kafka
  • Log4j2
  • Jetty (serverseitige Thread-Pool-Metriken)
  • Jersey (serverseitige HTTP-Request-Metriken)
  • Weitere Informationen zum Update auf Spring Boot 2.1 gibt es im Blog-Beitrag von Andy Wilkinson und in den Release Notes auf GitHub.

    API Summit 2018
    Christian Schwendtner

    GraphQL – A query language for your API

    mit Christian Schwendtner (PROGRAMMIERFABRIK)

    Über Spring Boot

    Ziel von Spring Boot war von Anfang an die Vereinfachung des Einstiegs in die Enterprise-Java-Entwicklung. Seit etwa dreieinhalb Jahren ist die Erweiterung integraler Bestandteil in der Spring-IO-Plattform. Mit Spring Boot können Spring-Anwendungen ohne die Konfiguration von Anwendungsservern oder Servlet-Containern zum Laufen gebracht werden. Zudem wird das Dependency-Management durch die Nutzung von Spring Boot vereinfacht.

    Anfangs wurde Spring Boot wegen seiner hohen Komplexität und der großen Anzahl an Abhängigkeiten von einigen noch mit Argwohn betrachtet. Auch wenn diese Vorbehalte längst relativiert wurden, ist die Erweiterung des Spring Frameworks durch seinen Funktionsumfang nicht immer ganz leicht zu durchschauen.

    Spring Boot Experten

    Wer Probleme beim Einstieg in Spring Boot hat, für den gibt es auf JAXenter Abhilfe: In seinem Einführungsartikel zu Spring Boot stellt W-JAX-Speaker Eberhard Wolff die Spring-Erweiterung vor und zeigt, wie man damit durchstarten kann. Michael Gruczels zweiteiliges Tutorial geht ein wenig weiter und zeigt einerseits, wie man REST-Services mit Spring Boot erstellt und wie man in 10 Schritten zur Microservices-Architektur kommt.

    Zur Veröffentlichung von Spring Boot 1.0 hat Spring-Experte Oliver Gierke die drei Kernelemente von Spring Boot wie folgt zusammengefasst:

    1. Dependency Management
    Mit reinem Maven/Gradle bleibt es dem Entwickler immer noch selbst überlassen, sich die entsprechenden Bibliotheken in den richtigen Versionen zusammenzusuchen. Die Starter-poms aus Spring Boot helfen hier und sind trotzdem flexibel genug, um bei Bedarf doch einmal eine einzelne Version abzuändern.

    2. Konfigurationsdefaulting
    Nehmen wir an, man will eine Webanwendung auf Basis von Thymeleaf, Spring MVC und Spring Data JPA mit Hibernate bauen. Über den Mechanismus in 1. bekommt man hier sehr schnell die Dependencies in passenden Versionen zusammen. Was man jetzt aber immer noch tun muss, ist ein Default Setup: DataSource konfigurieren, EntityManager konfigurieren, Spring Data aktivieren, SpringMVC Setup (ViewResolver für Thymeleaf), etc. Die Idee von Boot ist jetzt, in Abhängigkeit (vor allem) vom Classpath diese Konfiguration zu defaulten und den Entwickler die Konfiguration dann selektiv abändern zu lassen. Das macht es sehr einfach, schnell zu starten und trotzdem die volle Kontrolle darüber zu behalten, was da konfiguriert wird.

    3. Der Betrieb
    Wenn man einem Nicht-Java-Entwickler erzählt, was man alles tun muss, um eine Webapplikation in Java neu anzulegen und zu starten bzw. zu betreiben, ist dieser nach 2 Minuten verwirrt und rennt davon. Warum muss es denn eigentlich komplexer sein, als eine Klasse mit einer main(…)-Methode zu starten? Richtig, muss es nicht! Zumindest für die Entwicklungszeit ist das ein sehr bequemer Weg, mit einer Serverapplikation zu arbeiten. Wir sehen in den Staaten auch vermehrt Produktionsbetrieb auf diese Art und Weise. Es deployed ohnehin kaum jemand mehr als eine Applikation in einen Server (aus guten Gründen). Von daher ist dieser Weg von „App-in-den-Server“ zu „Server-in-der-App“ nicht zu groß. Kritischer Punkt hier ist ganz klar die Integration des Systems in die Monitoring- und App-Management-Welt, die Boot über die Actuators angeht. Hier ist definitiv noch Spielraum für Erweiterungen.

Verwandte Themen:

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: