Spring Boot ist ein Projekt innerhalb des größeren Spring Frameworks, das darauf abzielt, die Entwicklung von neuen Spring-Anwendungen zu vereinfachen. Es bietet eine Reihe von Konventionen und Voreinstellungen (sogenannte “Opinionated Defaults”), die es Entwicklern ermöglichen, schnell und mit minimaler Konfiguration zu starten. Hier sind die Hauptziele und Vorteile von Spring Boot im Überblick:
Vereinfachte Konfiguration: Spring Boot versucht, so viel Konfigurationsarbeit wie möglich automatisch zu erledigen. Es verwendet eine “Konvention über Konfiguration”-Philosophie, die es ermöglicht, mit minimalen Einstellungen zu starten, während immer noch die Möglichkeit besteht, diese Einstellungen nach Bedarf anzupassen.
Stand-alone Spring-Anwendungen: Mit Spring Boot können vollständig eigenständige Spring-Anwendungen erstellt werden, die einen eingebetteten Webserver enthalten (wie Tomcat, Jetty oder Undertow), was die Bereitstellung und den Betrieb vereinfacht.
Umfangreiche Auto-Konfiguration: Spring Boot versucht, basierend auf den hinzugefügten Abhängigkeiten intelligent zu konfigurieren. Zum Beispiel, wenn die Spring Boot Starter für JPA und H2-Datenbank auf dem Classpath sind, wird Spring Boot automatisch eine In-Memory-Datenbank konfigurieren und bereitstellen.
Einfache Abhängigkeitsverwaltung: Durch die Verwendung von “Starters”, die eine Sammlung von Abhängigkeiten für einen spezifischen Anwendungsfall zusammenfassen, vereinfacht Spring Boot die Maven- oder Gradle-Konfiguration.
Operational Readiness: Spring Boot enthält integrierte Unterstützung für Aspekte der Anwendungsüberwachung und -verwaltung, wie Gesundheitschecks, Metriken und externe Konfigurationen, durch Actuators, die ohne großen zusätzlichen Entwicklungs- oder Konfigurationsaufwand genutzt werden können.
Große Community und reichhaltiges Ökosystem: Als Teil des Spring-Ökosystems profitiert Spring Boot von einer großen und aktiven Community, die eine Fülle von Ressourcen, Tutorials und Unterstützung bietet. Darüber hinaus gibt es eine breite Palette von Drittanbieter-Starters und -Integrationen, die die Entwicklung weiter beschleunigen können.
Spring Boot zielt darauf ab, die Zeit von der Idee bis zur produktionsreifen Anwendung zu verkürzen, indem es die Komplexität traditioneller Spring-Anwendungen reduziert und es Entwicklern ermöglicht, sich auf ihre Geschäftslogik zu konzentrieren. Es ist ideal für Microservices-Architekturen sowie für monolithische Anwendungsstrukturen geeignet.
Spring Boot bietet eine breite Palette von Funktionen, die das Entwickeln von Spring-Anwendungen vereinfachen. Hier konzentrieren wir uns auf zwei Schlüsselfunktionen: Auto-Konfiguration und den eingebetteten Server.
Eine der zentralen Eigenschaften von Spring Boot ist seine Fähigkeit zur Auto-Konfiguration. Diese Funktion versucht, die Konfiguration einer Anwendung basierend auf den vorhandenen Klassen im Classpath automatisch zu erstellen. Das bedeutet, dass Spring Boot beispielsweise automatisch eine Datenquelle konfiguriert, wenn es eine Datenbankverbindungs-Bibliothek auf dem Classpath findet, oder einen Spring MVC-Webkontext konfiguriert, wenn Spring Web MVC verfügbar ist.
Die Auto-Konfiguration wird primär durch @Conditional-Annotationen gesteuert, die es Spring Boot ermöglichen, bestimmte Konfigurationen nur dann anzuwenden, wenn die entsprechenden Bedingungen erfüllt sind. Entwickler können die Auto-Konfiguration übernehmen oder bei Bedarf überschreiben, indem sie ihre eigene Konfiguration bereitstellen.
Spring Boot-Anwendungen benötigen keinen externen Webserver. Stattdessen können sie mit einem eingebetteten Webserver geliefert werden, wodurch die Bereitstellung und das Starten der Anwendung erheblich vereinfacht werden. Spring Boot unterstützt eingebettete Server wie Tomcat, Jetty und Undertow.
Die Wahl des Servers kann über die Abhängigkeiten im Build-Konfigurationsfile gesteuert werden, und Spring Boot konfiguriert den ausgewählten Server dann automatisch. Dies ermöglicht es Entwicklern, Webanwendungen zu erstellen, die als eigenständige JAR-Dateien ausgeführt werden können, ohne eine separate Webserver-Installation zu benötigen.
Um die Auto-Konfiguration und die Bereitstellung des eingebetteten
Servers zu erleichtern, bietet Spring Boot eine Reihe von “Starters”.
Dies sind vorkonfigurierte Gruppen von Abhängigkeiten, die alles
enthalten, was für einen bestimmten Anwendungstyp benötigt wird.
Beispielsweise fügt der Starter spring-boot-starter-web
alle Abhängigkeiten hinzu, die für die Erstellung einer Webanwendung
erforderlich sind, einschließlich des eingebetteten Tomcat-Servers und
Spring MVC.