Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Spring Boot
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Spring Boot ist ein Framework für Java, mit dem man Webanwendungen, REST-Schnittstellen und Hintergrunddienste schnell aufsetzt. Es bringt einen eingebauten Webserver mit und richtet vieles selbst ein. Eine fertige Anwendung ist eine einzelne .jar-Datei, die sich mit java -jar starten lässt.
Vorbemerkungen
- Keine Installation im engeren Sinn: Spring Boot wird nicht auf dem System installiert, sondern gehört als Abhängigkeit zu jedem Projekt. Aus den Ubuntu-Paketquellen kommt nur das Java-Entwicklungspaket (JDK).
- Projekt anlegen mit Spring Initializr: Der offizielle Dienst https://start.spring.io erzeugt ein fertiges Projektgerüst. Diese Anleitung ruft ihn mit
curlauf, im Browser geht es genauso. - Maven Wrapper: Das Projekt enthält das Skript
./mvnw. Es lädt beim ersten Aufruf automatisch das Build-Werkzeug Maven in der passenden Version herunter. Ein systemweites Maven ist nicht nötig. - Versionen: Spring Boot 4.1.1 und Java 25. Java 25 ist die aktuelle Version mit Langzeitunterstützung (LTS) und das Standard-JDK von Ubuntu 26.04.
Installation
1. Paketlisten aktualisieren
Damit apt die aktuellen Versionen von JDK und Hilfsprogrammen kennt.
sudo apt update
2. JDK und Hilfsprogramme installieren
default-jdk– Java-Entwicklungspaket (Compiler und Laufzeitumgebung) in der Standardversion von Ubuntu. Ist es schon vorhanden (z. B. aus der IntelliJ-IDEA-Anleitung), meldetaptdas nur.curl– lädt das Projektgerüst von Spring Initializr herunterunzip– entpackt es
sudo apt install default-jdk curl unzip
Prüfen: Die Ausgabe nennt eine Java-Version ab 25, z. B. openjdk version "25…".
java -version
Ist zusätzlich eine neuere Java-Version installiert (z. B. 26), wird diese angezeigt. Das ist in Ordnung: Sie kann Projekte für Java 25 ebenfalls übersetzen.
Erstes Projekt
3. In das Home-Verzeichnis wechseln
Das Projekt wird im Ordner ~/hallo angelegt.
cd ~
4. Projektgerüst herunterladen
Fordert bei Spring Initializr ein fertiges Projekt als ZIP-Datei an. Die Angaben bedeuten:
type=maven-project– Build mit Maven (Alternative:gradle-project)bootVersion,javaVersion– Spring-Boot- und Java-VersiongroupId,artifactId,packageName– Namen für Projekt und Java-Paket. DiegroupIdist üblicherweise eine umgedrehte Domain.dependencies=web,actuator– die gewünschten Bausteine:webfür Webanwendungen und REST-Schnittstellen mit eingebautem Webserver (Tomcat),actuatorfür Betriebsinformationen wie den Gesundheitszustand
curl https://start.spring.io/starter.zip -d type=maven-project -d bootVersion=4.1.1 -d javaVersion=25 -d groupId=de.beispiel -d artifactId=hallo -d packageName=de.beispiel.hallo -d dependencies=web,actuator -o hallo.zip
Prüfen: Die Datei ist ein ZIP-Archiv.
file hallo.zip
5. Projekt entpacken
Entpackt das Archiv in den Ordner ~/hallo.
unzip hallo.zip -d hallo
6. ZIP-Datei löschen
Das Archiv wird nicht mehr gebraucht.
rm hallo.zip
7. In den Projektordner wechseln
Alle weiteren Befehle beziehen sich auf diesen Ordner.
cd ~/hallo
Prüfen: Unter anderem werden pom.xml (Projektbeschreibung für Maven), mvnw (Maven Wrapper) und der Ordner src angezeigt.
ls
Eine REST-Schnittstelle schreiben
8. Controller anlegen
Ein Controller beantwortet HTTP-Anfragen. Die Klasse liegt neben der von Initializr erzeugten Startklasse HalloApplication.java, damit Spring Boot sie automatisch findet. Die Anmerkungen (Annotationen) steuern das Verhalten:
@RestController– die Klasse liefert Daten (hier JSON), keine HTML-Seiten@GetMapping("/hallo")– die Methode beantwortetGET-Anfragen an/hallo@RequestParam(defaultValue = "Welt")– liest den Parameternameaus der Adresse, ohne Angabe gilt „Welt“
Spring Boot wandelt die zurückgegebene Map automatisch in JSON um.
nano src/main/java/de/beispiel/hallo/HalloController.java
Füge diesen Inhalt ein (im Terminal mit Strg+Umschalt+V), speichere mit Strg+O und Enter und beende nano mit Strg+X:
package de.beispiel.hallo;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
// Eine REST-Schnittstelle: Die Klasse beantwortet HTTP-Anfragen
@RestController
public class HalloController {
// GET /hallo?name=... liefert eine Begrüßung als JSON
@GetMapping("/hallo")
public Map<String, String> hallo(@RequestParam(defaultValue = "Welt") String name) {
return Map.of("gruss", "Hallo " + name + "!");
}
}
9. Anwendung nur lokal erreichbar machen
Ohne weitere Angabe ist der eingebaute Webserver aus dem ganzen Netz erreichbar. Diese Zeilen in der Einstellungsdatei beschränken ihn auf den eigenen Rechner und legen den Port 8080 ausdrücklich fest.
nano src/main/resources/application.properties
Springe mit Strg+Ende ans Ende der Datei und füge in eigenen Zeilen an (im Terminal mit Strg+Umschalt+V). Speichere mit Strg+O und Enter und beende nano mit Strg+X:
server.address=127.0.0.1
server.port=8080
Prüfen: Die Datei enthält drei Zeilen: den Anwendungsnamen und die beiden neuen Einstellungen.
cat src/main/resources/application.properties
Starten und testen
10. Anwendung im Entwicklungsmodus starten
spring-boot:run übersetzt das Projekt und startet die Anwendung direkt. Beim ersten Aufruf lädt der Maven Wrapper Maven und alle Bibliotheken herunter (etwa 70 MB, nach ~/.m2). Das dauert eine Weile, spätere Starts gehen schnell. Das Terminal bleibt belegt, solange die Anwendung läuft.
./mvnw spring-boot:run
Prüfen: Die Ausgabe endet mit Zeilen wie Tomcat started on port 8080 und Started HalloApplication in … seconds.
11. REST-Schnittstelle aufrufen
Öffne ein zweites Terminal und frage die neue Schnittstelle ab.
curl "http://localhost:8080/hallo?name=Thorsten"
Prüfen: Die Antwort lautet {"gruss":"Hallo Thorsten!"}. Ohne ?name=… kommt {"gruss":"Hallo Welt!"}.
12. Gesundheitszustand abfragen
Der Baustein Actuator stellt unter /actuator/health den Zustand der Anwendung bereit. Überwachungswerkzeuge fragen diese Adresse regelmäßig ab. Weitere Actuator-Endpunkte sind aus Sicherheitsgründen zunächst abgeschaltet.
curl http://localhost:8080/actuator/health
Prüfen: Die Antwort enthält "status":"UP".
13. Anwendung beenden
Wechsle in das erste Terminal und drücke Strg+C.
Fertige Anwendung bauen
14. JAR-Datei erzeugen
package übersetzt das Projekt, führt die mitgelieferten Tests aus und packt alles, einschließlich Webserver und Bibliotheken, in eine einzige Datei. Die Warnungen zu Mockito und Java agent während der Tests sind harmlos.
./mvnw package
Prüfen: Die Ausgabe endet mit BUILD SUCCESS, und im Ordner target liegt die Datei hallo-0.0.1-SNAPSHOT.jar (etwa 22 MB).
ls -lh target/*.jar
15. JAR-Datei starten
So wird die Anwendung auch auf einem Server gestartet. Außer Java wird dort nichts gebraucht.
java -jar target/hallo-0.0.1-SNAPSHOT.jar
Prüfen: Im zweiten Terminal liefert curl http://localhost:8080/hallo wieder {"gruss":"Hallo Welt!"}. Mit Strg+C beendest du die Anwendung.
Wie geht es weiter?
- Entwicklungsumgebung: IntelliJ IDEA öffnet das Projekt direkt über die Datei
pom.xml. In VS Code helfen die Erweiterungen „Extension Pack for Java“ und „Spring Boot Extension Pack“, in Eclipse die „Spring Tools“ aus dem Eclipse Marketplace. - Weitere Bausteine: Auf https://start.spring.io findest du alle verfügbaren Abhängigkeiten, z. B.
data-jpaundpostgresqlfür den Zugriff auf PostgreSQL,securityfür Anmeldung und Rechte oderdevtoolsfür automatischen Neustart bei Codeänderungen. - KI-Anbindung: Mit dem Projekt Spring AI lassen sich Sprachmodelle und Vektordatenbanken wie pgvector, Qdrant oder Milvus einbinden.
Deinstallieren
1. Projekt entfernen
Löscht den Projektordner mit Quellcode und gebauter JAR-Datei. Achtung: Eigene Änderungen am Projekt gehen verloren.
rm -rf ~/hallo
2. Maven-Downloads entfernen
Der Maven Wrapper hat Maven nach ~/.m2/wrapper und alle Bibliotheken nach ~/.m2/repository geladen. Behalte den Ordner, wenn du weitere Java-Projekte mit Maven hast, sonst müssen sie alles neu herunterladen.
rm -rf ~/.m2
3. Optional: JDK entfernen
Nur ausführen, wenn kein anderes Programm Java braucht (z. B. IntelliJ IDEA oder Eclipse). curl und unzip brauchen viele andere Programme, sie bleiben deshalb installiert.
sudo apt purge default-jdk
sudo apt autoremove
Prüfen: Der Projektordner existiert nicht mehr.
ls ~/hallo
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Open Knowledge (Freies Wissen): Alle Texte stehen unter der freien Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International (CC BY-SA 4.0) und können frei gelesen, geteilt und weiterverarbeitet werden.