Alan Zeichick | Senior Writer | 29. Oktober 2024
Software zu schreiben ist ein wenig wie das Öffnen eines neuen leeren Dokuments in Ihrem bevorzugten Textverarbeitungsprogramm: Was tun Sie zuerst? Und wie gehen Sie mit all dem mühsamen Standardcode um, der für eine komplexe Anwendung notwendig ist – ohne etwas Wichtiges zu vergessen oder einen Konfigurationsfehler zu machen? Genau hier kommen Anwendungs-Frameworks ins Spiel, die die grundlegende Struktur für unterschiedliche Arten von Anwendungen bereitstellen. Sobald Ihr Entwicklungsteam ein Framework ausgewählt hat, kann die eigentliche Softwareentwicklung beginnen. Nein, es ist nicht so einfach wie ein Ausfüllformular, aber das Gerüst eines Frameworks übernimmt die Voraussetzungen für Projekte – von einem einfachen Microservice oder einer Webanwendung bis hin zu einer klassischen Client/Server-Anwendung.
Für Java-Entwickler gehört Spring zu den beliebtesten Frameworks. Es ist äußerst flexibel und vielseitig. Mit Spring können Sie nahezu alles entwickeln – von einem kleinen Service bis zu einem großen, geschäftskritischen System. Doch genau diese Vielseitigkeit ist zugleich eine Schwäche: Spring ist oft zu komplex und bietet zu viele Optionen. Und hier kommt Spring Boot ins Spiel. Spring Boot ist eine Erweiterung von Spring, die deutlich einfacher zu nutzen ist, weil viele Entscheidungen automatisch getroffen werden – insbesondere bei der Verwaltung von Abhängigkeiten und Konfigurationen.
Kurz gesagt: Wenn Sie über den Einsatz von Spring nachdenken, können Sie vermutlich – und sollten Sie wahrscheinlich – stattdessen Spring Boot verwenden.
Spring Boot ist ein Open-Source-Framework auf Java-Basis zur Erstellung von Spring-basierten Anwendungen. Spring, das Anfang der 2000er-Jahre entwickelt wurde, wurde schnell zu einem der beliebtesten Java-Frameworks für Unternehmensanwendungen. Spring Boot wurde später eingeführt – als leichter zu nutzendes Framework, das alle Tools und Technologien von Spring erweitert und eine schnelle Anwendungsentwicklung ermöglicht.
Für Java-Entwickler bietet Spring eine beeindruckende Auswahl an Kerntechnologien – von Dependency Injection über Event-Management, Internationalisierung, Data Binding, Typkonvertierung bis hin zu Aspektorientierter Programmierung. Alles, was man sich vorstellen kann, ist in Spring enthalten: Testing, Mocking, Datenobjekte, Model-View-Controller-Webanwendungen, Remoting, Aufgabenplanung – die Liste ist endlos. Entwickler können entscheiden, ob sie einige oder alle dieser Funktionen nutzen möchten – das liegt ganz beim Entwicklungsteam und der Softwarearchitektur.
Das Spring Framework ist Open-Source-Software unter der Apache-2.0-Lizenz.
Das Spring-Projekt umfasst zahlreiche Unterprojekte, die sich auf Cloud-Anwendungen, Sicherheit, das Bereitstellen und Konsumieren von Webservices, Credential-Management, Datenzugriff, Event-Management und sogar künstliche Intelligenz konzentrieren. Diese Flexibilität kann jedoch zu Komplexität führen: Das Aufsetzen umfangreicher Spring-basierter Anwendungen kann Entwicklungsteams in ein Labyrinth aus Optionen, Entscheidungen und Konfigurationen führen – und manche davon sind nach der manuellen Einrichtung nur schwer zu ändern, sobald die eigentliche Programmierung begonnen hat.
Hier kommt Spring Boot ins Spiel.
Die wichtigsten Unterschiede zwischen Spring und Spring Boot liegen in einem Kompromiss zwischen Komplexität und Benutzerfreundlichkeit.
Spring ist nahezu unbegrenzt konfigurierbar, aber Sie müssen viel Zeit investieren, um Entscheidungen zu treffen, Module und Drittanbieterbibliotheken auszuwählen und anschließend all diese Funktionen zu konfigurieren. Und all das, bevor Sie überhaupt mit der eigentlichen Programmierung beginnen können.
Mit Spring Boot können Sie deutlich schneller starten, da das Framework viele Installations- und Konfigurationsentscheidungen automatisch für Sie übernimmt. Sie verzichten auf etwas Flexibilität, aber in der Praxis ist das kaum ein Nachteil. In nahezu allen Fällen ist Spring Boot die bessere Wahl für Webentwicklung und Microservices. In Ausnahmefällen oder bei sehr großen Projekten kann es sinnvoll sein, stattdessen Spring einzusetzen.
Wichtige Erkenntnisse
Spring Boot ist ein Open-Source-Anwendungsframework zur Entwicklung von Enterprise-Java-Anwendungen. Es wurde entwickelt, um Entwicklungsteams einen schnellen Einstieg zu ermöglichen. Spring Boot erstellt eigenständige Spring-Anwendungen, ohne die oft mühsamen Konfigurationsentscheidungen, die bei vollständigem Spring erforderlich sind.
Die Ziele des Spring-Projekts bestehen darin, eine deutlich schnellere und effizientere Entwicklererfahrung zu ermöglichen – und zwar durch klare Vorgaben. Das bedeutet, dass Algorithmen automatisch auswählen, welche Spring-Module und Funktionen aktiviert werden und welche Drittanbieterbibliotheken installiert werden. Anschließend werden diese automatisch für Sie konfiguriert. Darüber hinaus erweitert Spring Boot Java-Projekte um zahlreiche nicht-codebasierte Funktionen wie eingebettete Webserver, Sicherheitssysteme, Metriken und Analysen.
Die aktuelle Version von Spring Boot (Stand: 3.3.4) setzt mindestens Java 17 sowie Spring Framework 6.1.13 oder höher voraus. Spring Boot ist mit den Build-Tools Maven 3.6.3 sowie Gradle 7.x und 8.x kompatibel. Für eingebettete Servlet-Container unterstützt es Tomcat, Jetty, Undertow oder jeden servlet-kompatiblen Container ab Version 5.0. In der Praxis werden Sie vermutlich auch GitHub einsetzen.
Der Vorteil von Spring Boot liegt darin, dass Sie die umfangreichen Möglichkeiten des Spring-Frameworks nutzen können, ohne dessen Komplexität tragen zu müssen. Projekte lassen sich auf jeder Java-Virtual Machine ausführen, die Java 17 oder höher unterstützt – ein separater Webserver oder WAR-Dateien sind nicht erforderlich.
Anstelle von XML-Konfigurationen verwendet Spring Boot die Datei application.properties, was insbesondere für datenbankgestützte Anwendungen mit Oracle Database oder MySQL ideal ist. Nutzt Ihre Anwendung MySQL, kann Spring Boot sogar automatisch eine In-Memory-Datenbank konfigurieren. Spring Data JPA ermöglicht die Arbeit mit einer Vielzahl unterschiedlicher Datenzugriffstechnologien.
Wenn Sie die Architektur genauer erkunden möchten, finden Sie hier ein Beispiel für eine Spring-Boot-basierte Anwendung.
Spring Boot nutzt – wie viele Java-Anwendungsframeworks und Erweiterungen – Dependency Injection (DI) und Inversion of Control (IoC), um Java-Programme um zusätzliche Funktionen zu erweitern.
DI ermöglicht es einem externen Framework – in diesem Fall Spring Boot –, Objekte und Funktionen für die Unternehmensanwendung bereitzustellen, sodass der Entwickler sie nicht selbst erstellen muss. Je nach Situation muss der Entwickler lediglich die Schnittstellen zu diesen Objekten und Funktionen kennen oder definieren.
Bei IoC kommt der Programmablauf aus einer externen Quelle: In Spring Boot kümmert sich der Entwickler um die Programmlogik, während das Framework die Ereignissteuerung und die Nachrichtenverarbeitung übernimmt. Spezielle IoC-Container in Spring übernehmen die effiziente Bereitstellung von Objekten und Funktionen per Dependency Injection – mit minimalem Aufwand für den Entwickler.
Spring und Spring Boot verwenden Java-Annotationen. Dabei handelt es sich um nicht kompilierbare Markierungen, die mit einem @-Symbol beginnen, im Code eingebettet sind und Metadaten bereitstellen, die zur Erweiterung der Funktionalität genutzt werden.
Spring Boot wird geladen, indem sowohl die Spring-Abhängigkeiten als auch die Spring-Boot-Starter-Abhängigkeiten in die pom.xml (Maven) oder build.gradle (Gradle) eines neuen Projekts aufgenommen werden. Anschließend ergänzt der Entwickler die passenden Spring-Boot-Annotationen im Code, etwa @RestController zum Aufbau eines REST-Controllers für Webservices. Spring Boot stellt zahlreiche Komponenten bereit, die Entwurf und Entwicklung erheblich vereinfachen – beispielsweise die Integration mit mehreren JSON-Bibliotheken wie Jackson für Serialisierung und Deserialisierung. Die Spring-Security-Komponenten sind unverzichtbar für jede Anwendung, die HTTP- oder Formularzugriffe nutzt – im Grunde für jede Webanwendung.
Das Spring-Boot-Framework stellt eine Vier-Schichten-Architektur bereit, die HTTP-Anfragen und JSON-Datenübertragung von der Geschäftslogik trennt und diese wiederum von der objektorientierten Datenrepräsentation sowie der physischen Speicherung in externen Datenbanken. Diese Architektur kann unverändert genutzt werden, was sich ideal für die Entwicklung von Microservices eignet. Alternativ lässt sie sich auf das Model-View-Controller-Muster abbilden, das sich besonders gut für Webanwendungen eignet.
Sobald alle Abhängigkeiten hinzugefügt und die Programmlogik geschrieben wurde, starten die üblichen Maven- oder Gradle-Run-Befehle die Anwendung. Spring Boot stellt sicher, dass alle benötigten Komponenten des Spring Framework korrekt installiert und für das Projekt passend konfiguriert sind. Wenn Sie eine eigenständige ausführbare Datei erstellen möchten, können Sie mit Spring Boot direkt eine verschachtelte JAR-Datei erzeugen, die sich auf jeder Standard-JVM (Java 17 oder höher) oder auf einer Native-Image-Plattform wie GraalVM ausführen lässt.
Das Spring-Anwendungsframework erleichtert Java-Entwicklern die Arbeit – unabhängig davon, ob es sich um ein großes oder kleines Projekt handelt. Im Kern vereinfacht es den Aufbau des Grundgerüsts eines Java-Projekts, indem es eine große Anzahl an Modulen und Drittanbieterbibliotheken installiert und konfiguriert – ein Prozess, der je nach Architektur und Kontext der Anwendung sehr komplex sein kann. Benötigt eine Anwendung beispielsweise einen Webserver oder einen REST-Endpunkt für Microservices, stellt Spring diese Funktionen bereit.
Neben der höheren Produktivität überzeugt Spring auch durch effiziente Laufzeiten. Die Konfiguration von Services und Bibliotheken ist oft anspruchsvoll – ebenso deren Optimierung für hohe Geschwindigkeit und geringen Speicherbedarf. Spring und insbesondere Spring Boot wurden über Jahre hinweg feinabgestimmt, sodass Anwendungen schnell starten und ebenso schnell herunterfahren. Das ist vor allem in Microservices-Architekturen entscheidend.
Ganz gleich, welche Art von Anwendung entwickelt wird – Spring Boot stellt eine flexible Architektur mit vier klar getrennten Ebenen bereit. Diese sorgt für funktionale Trennung und übersichtliche Abstraktion. Die Datenbankebene kommuniziert mit externen Datenquellen wie relationalen oder objektorientierten Datenbanken. Die Persistenzebene übernimmt die objektrelationalen Abbildungen und sendet CRUD-Anfragen an die Datenbank. Die Business-Ebene steuert die gesamte Logik und den Programmfluss. Die Präsentationsebene verarbeitet HTTP-Anfragen und kümmert sich um die Übersetzung in JSON. Spring Boot stellt dafür die grundlegenden Strukturen bereit. Das Entwicklerteam konzentriert sich somit vor allem auf die eigentliche Logik – und die Anwendung nimmt schnell Form an.
Wir vereinfachen das an dieser Stelle zwar ein wenig, aber das Prinzip wird deutlich.
Ein weiterer Grund für die große Beliebtheit von Spring liegt in seiner weiten Verbreitung. Spring ist im Java-Ökosystem allgegenwärtig, und nahezu alle marktführenden Anbieter unterstützen Spring und Spring Boot mit Bibliotheken, Plug-ins und umfangreicher Dokumentation. Hinzu kommen aktive Community-Foren, Schulungen, Online- und Präsenzkonferenzen sowie offizielle Zertifizierungen. Daher ist der Einsatz von Spring und Spring Boot nicht nur technisch sinnvoll, sondern auch aus geschäftlicher Sicht eine gute Wahl – denn qualifizierte Fachkräfte sind leicht zu finden.
Spring Boot bietet Enterprise-Java-Entwicklern mehrere Vorteile gegenüber dem direkten Einsatz des Spring Frameworks. Grundsätzlich gilt: Wenn sich die Anforderungen sowohl mit Spring als auch mit Spring Boot erfüllen lassen, ist Spring Boot in der Regel die bessere Wahl – dank vereinfachter Einrichtung und höherer Produktivität. Zu den konkreten Vorteilen zählen unter anderem:
Spring Boot hat sich über Jahrzehnte weiterentwickelt, um den Anforderungen von Enterprise-Java-Entwicklern besser gerecht zu werden. Auch wenn die Vielzahl an Funktionen auf den ersten Blick überwältigend wirken kann, verfolgt Spring Boot ein klares Ziel: Vereinfachung. Durch die intelligente Auswahl der geeigneten Module, Funktionen und Bibliotheken können sich Entwickler stärker auf die eigentliche Programmlogik konzentrieren und weniger auf Infrastruktur, Integrationsarbeit und grundlegende Framework-Strukturen.
Hier finden Sie einige Features von Spring Boot, die den Entwicklungsprozess spürbar erleichtern.
Warum ist Spring Boot so beliebt?
Die Vorteile reichen von der Entwicklung bis zum Deployment von Anwendungen.
Beliebte Spring Boot-Features
Entwicklung:
Bereitstellung:
Spring Boot kann für jede Art von Enterprise-Java-Anwendung eingesetzt werden – ob klein oder groß, ob ein schlanker Microservice, eine komplexe geschäftskritische On-Premises-Anwendung oder eine moderne Cloud-App. Eine typische Spring-Boot-Anwendung besteht aus vier Schichten, die sich flexibel an die Anforderungen der jeweiligen Anwendung anpassen lassen. Ein einfacher Microservice benötigt beispielsweise keine Datenbank- oder Persistenzschicht.
Von unten nach oben sind dies die vier Schichten:
Bereit, Spring Boot auszuprobieren? Die Einrichtung ist unkompliziert – ein Grund, warum so viele Entwicklungsteams Spring Boot einsetzen und warum Studenten und Schüler dieses beliebte Anwendungsframework erlernen. Wer starten möchte, sollte einen Blick in die offizielle Dokumentation Developing Your First Spring Boot Application werfen. Hier ist eine Zusammenfassung der Schritte:
Wenn Sie den Service ausprobieren möchten, sehen Sie sich CloudBank an – eine Anwendung, die die meisten bereitgestellten Services nutzt.
Die Datenbankschicht von Spring Boot ist mit einer Vielzahl von Cloud- und On-Premises-Datenbanken kompatibel; zwei besonders beliebte Optionen sind Oracle Database und MySQL. Die Entwicklerteams von Oracle setzen alles daran, Spring Boot zu unterstützen – sei es durch Beiträge zum Open-Source-Projekt oder durch die Integration zahlreicher Oracle Frameworks und Bibliotheken. Unterstützte Spring-Starter für Oracle Database und OCI-Services finden Sie ebenfalls im Oracle Cloud Marketplace.
Oracle Backend for Microservices and AI, eine im Juni 2024 eingeführte Plattform, stellt ein „Backend-as-a-Service“ mit Oracle Database und weiteren Infrastrukturkomponenten bereit. Die Lösung läuft in mehreren Clouds und ermöglicht es Entwicklern, Microservices in Spring Boot und anderen Frameworks zu erstellen und bereitzustellen. Sie vereinfacht Aufbau, Test und Betrieb von Microservices-Plattformen und bietet eine AI Sandbox (Developer Preview) für schnelle Iterationen und Experimente mit RAG- und agentenbasierten Techniken unter Nutzung von Oracle Database 23ai. Die AI Sandbox kann Spring-AI-Microservice-Code generieren, der über Oracle Backend for Microservices and AI verwaltet und bereitgestellt werden kann. Die Plattform stellt dafür eine Befehlszeilenschnittstelle, ein Visual-Studio-Code-(VS-Code-)Plug-in, ein IntelliJ-Plug-in, Service Discovery und Event Management bereit.
Fazit: Spring Boot ist die kluge Open-Source-Wahl. Es ermöglicht Ihrem Entwicklungsteam, komplexe Geschäftsapplikationen deutlich schneller zu erstellen als mit dem Spring Framework allein. Da Spring Boot Funktionen, Features und externe Bibliotheken intelligent installiert und automatisch konfiguriert, können sich Entwickler auf die Lösung des geschäftlichen Problems konzentrieren – dort, wo der eigentliche Mehrwert der Anwendung entsteht.
KI-Modelle können Betrug in Echtzeit erkennen, Forschungsteams im Gesundheitswesen bei der Gewinnung neuer Erkenntnisse unterstützen, Kundenbewertungen und Stimmungen in sozialen Medien analysieren und vieles mehr. Der gemeinsame Nenner: Intelligente Entwicklung, die Daten wirksam nutzt. Unser E-Book stellt 11 praxisnahe KI-Anwendungsfälle vor.
Was ist Spring Boot und warum wird es verwendet?
Spring Boot ist ein Anwendungsframework, das Java-Entwicklern ermöglicht, die leistungsstarke Vier-Schichten-Architektur des Spring Framework zu nutzen – jedoch deutlich einfacher in der Handhabung. Die Vorteile sind höhere Entwicklerproduktivität, kürzere Bereitstellungszeiten und ein geringeres Fehlerrisiko dank der automatischen Konfiguration von Spring Boot.
Ist Spring Boot ein Backend-Framework?
Spring Boot ist ein Framework für die Entwicklung von Enterprise-Java-Anwendungen. Es eignet sich sowohl für Cloud- als auch für On-Premises-Umgebungen und für die Erstellung von Web-, Microservices- und Client/Server-Anwendungen. Spring Boot umfasst Funktionen für Frontend (Präsentation und Geschäftslogik) ebenso wie für Backend (Persistenzabstraktion und Datenbankanbindung).