Ein erstes SpringBoot Projekt mit VSCode erzeugen
https://bildung.social/@oerinformatik/
https://oer-informatik.de/sbb01_initialisieren-des-projekt
tl/dr; (ca. 6 min Lesezeit): Mit dem SpringInitializr eine neues Projekt konfigurieren und anlegen, in der Projektstruktur zurechtfinden, einen “Hello World”-Webservice implementieren und starten. Dieser Artikel ist ein Teil der Artikelserie zu einem Adressbuch-SpringBoot-Projekt. Weiter geht es dann mit einer API, die ständig “selber…” sagt Kleiner Bruder API. (Zuletzt geändert am 04.09.2023)
Das Spring-Framework ist sehr flexibel und kann bis ins kleinste Detail konfiguriert werden. Daher muss für ein neues Spring-Projekt zunächst in einer Start-Konfiguration vorgegeben werden, welche Programmiersprache genutzt werden soll, wie das Projekt heißen soll usw.. Hierzu gibt es ein Tool - den Spring Initializr. Die Übersicht aller Eingaben, die wir gleich Schritt für Schritt toolgestützt vornehmen werden, findet sich schonmal in dieser Übersicht:

Die Spring Extensions von VS Codium helfen uns dabei, die Konfiguration zu erstellen. Falls einzelne Schritte nicht klar sind, hilft vielleicht diese ausführlichere Anleitung1 dabei, ein erstes Projekt zu erstellen.
Wenn keine Spring-IDE genutzt wird, kann diese Konfiguration auch über diesen link des SpringInitializrs geladen werden.
Um den Spring Initializr in VSCode zu nutzen geht man wie folgt vor:
Commands per Tastenkombination
Str-Shift-P
öfnen, dort wahlweise“Spring Initializr: Create a Maven Project” (unten) eingeben (empfiehlt sich für Einsteiger)
“Spring Initializr: Create a Gradle Project” (oben) eingeben (empfiehlt sich für erfahrene Gradle-Nutzer)

- die letzte stabile Version wählen (hier: 3.1.3)

- die genutzte Programmiersprache wählen (Java)

- eine Group-ID wählen (Paketbezeichnung in Java, Aufbau wie ein umgekehrter FullQualifiedDomainName FQDN). Ich wähle
de.csbme.ifaxx

- eine Bezeichnung für das Produkt (Artefakt) wird noch verlangt. Ich wähle
addressbook

- es muss noch ausgewählt werden, ob ein JAR (Archiv der Java-Klassendateien) oder eine WAR-Datei (Spezielles JAR, das für v.a. für Servlets genutzt wird) benutzt werden soll. Das Projekt wird als JAR erstellt.

- welche Java-Version soll genutzt werden? Empfehlenswert ist jeweils die letzte LTS-Datei (wie oben installiert), momentan ist das noch Java 17. Bei der Gelegenheit kann nochmal überprüft werden, ob
java --version
,mvn -v
/gradle -v
undJAVA_HOME
jeweils auf diese Version zeigen.

- abschließend werden noch die wesentlichen Module angegeben, die das Projekt nutzen soll. Wir benötigen zunächst nur “Spring Web” (scrollen! es steht weiter unten).

Es folgt die Abfrage, wo der Projektordner angelegt werden soll. Wichtig: VSCode ist manchmal etwas uneinsichtig, wenn im Pfad Umlaute vorkommen.
Das Projekt kann direkt über ein kleines Pop-up in der unteren rechten Ecke geöffnet werden:

Doch davor muss man dem Autor noch das Vertrauen schenken:

Im Springboot-Projekt zurechtfinden
Für den Anfang sind drei Dateien in dem neu erstellten Projekt wichtig: die Config-Datei des Build-Tools (Maven: pom.xml
, Gradle: build.gradle
), die AddressbookApplication.java
(das eigentliche Programm) und die application.properties
(Konfiguration von Spring)
- in der
pom.xml
-Datei finden sich alle Einstellungen, die wir gerade mithilfe von Spring Initilizr gemacht haben. Hier müssen wir zunächst nichts anpassen:

- die
application.properties
findet sich im Verzeichnissrc/main/ressources
. Diese Datei ist wichtig, wenn der Port geändert werden muss, über den die Springboot-App erreichbar ist (also z.B.http://localhost:8080
).
Ob ein Port bereits belegt ist, findet man z.B. über die PowerShell mit dem Einzeiler: Get-Process -Id (Get-NetTCPConnection -LocalPort 8080).OwningProcess
heraus. In die bis dahin leere Datei muss ein Einzeiler mit dem neuen Port eingefügt werden. Ich nutze hier immer:
- Jetzt muss nur noch das Programm
AddressbookApplication.java
so angepasst werden, dass es eine Ausgabe erzeugt.

Hierzu muss (von unten nach oben):
- Eine Methode
helloWorld()
angefügt werden, die die Ausgabe vornimmt,
die Klasse
AddressbookApplication
mit der Annotation@RestController
versehen werden, damit Spring weiß, dass diese Klasse für Anfragen (Requests) zuständig ist,die entsprechenden Imports angefügt werden - z.B. in dem über die ToolTips die entsprechenden Imports ergänzt werden.

Der spannende Augenblick
Ausgeführt wird die Datei z.B. über das Menü (Ausführen - Debugging starten) oder über den “Play”-Button oben rechts:

Es folgt eine Weile Download-Meldungen, und ein bisschen ASCII-Art:
PS C:\CSBME\Fächer\IT\Prog\Java-SpringBoot\oer\src\gradleversion\addressbook> & 'C:\Users\hanne\.vscode-oss\extensions\redhat.java-1.21.0-win32-x64\jre\17.0.7-win32-x86_64\bin\java.sers\hanne\AppData\Local\Temp\cp_89au8n5x00yl69e2ieyaxyfkv.argfile' 'de.csbme.ifaxx.addressbook.AddressbookApplication'
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.3)
2023-09-04T22:21:55.394+02:00 INFO 18576 --- [ main] d.c.i.a.AddressbookApplication : Starting AddressbookApplication using Java 17.0.7 with PID 18576 (C:\CSBME\Fõcher\IT\Prog\Java-SpringBoot\oer\src\gradleversion\addressbook\bin\main started by hanne
in C:\CSBME\Fõcher\IT\Prog\Java-SpringBoot\oer\src\gradleversion\addressbook)
2023-09-04T22:21:55.406+02:00 INFO 18576 --- [ main] d.c.i.a.AddressbookApplication : No active profile set, falling back to 1 default profile: "default"
2023-09-04T22:21:58.469+02:00 INFO 18576 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8085 (http)
2023-09-04T22:21:58.496+02:00 INFO 18576 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-09-04T22:21:58.497+02:00 INFO 18576 --- [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.12]
2023-09-04T22:21:58.878+02:00 INFO 18576 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-09-04T22:21:58.883+02:00 INFO 18576 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3293 ms
2023-09-04T22:22:00.115+02:00 INFO 18576 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8085 (http) with context path ''
2023-09-04T22:22:00.153+02:00 INFO 18576 --- [ main] d.c.i.a.AddressbookApplication : Started AddressbookApplication in 5.491 seconds (process running for 6.97)
Wenn das Programm bereits einmal läuft (und somit den Port belegt) oder ein anderer Dienst auf dem Port läuft muss gegebenenfalls der Port getauscht (siehe oben) oder der jeweilige Service beendet werden. Man erkennt diese Situation an dieser Meldung:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2023-09-04T22:22:00.153+02:00 ERROR 13564 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Web server failed to start. Port 8085 was already in use.
Action:
Identify and stop the process that's listening on port 8085 or configure this application to listen on another port.
Mehrere eigene Instanzen lassen sich z.B. rechts am Terminal-Fenster erkennen und löschen (Mülleimer).

Lorbeeren ernten: die App im Browser
Wenn das alles geklappt hat ist es an der Zeit, die Lorbeeren zu ernten und im Browser die API zu testen: ein Aufruf von http://localhost:8085/hello
sollte das erwünschte “Hello World!” zutage fördern:

Wunderbar. Noch nicht viel. Aber es klappt.
Nächster Schritt
Dieser Artikel ist ein Teil der Artikelserie zu einem Adressbuch-SpringBoot-Projekt.
Weiter geht es dann mit einer API, die ständig “selber…” sagt: der Kleiner Bruder API.
Links und weitere Informationen
Hinweis zur Nachnutzung als Open Educational Resource (OER)
Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY-SA 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Ein erstes SpringBoot Projekt mit VSCode erzeugen” von Hannes Stein, Lizenz: CC BY-SA 4.0. Der Artikel wurde unter https://oer-informatik.de/sbb01_initialisieren-des-projekt veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/java-springboot/Backend. Stand: 04.09.2023.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]