Spring Boot Basic – Tag 1 von 10
Von Elyndra Valen, Senior Entwicklerin bei Java Fleet Systems Consulting

📍 Deine Position im Kurs
| Tag | Thema | Status |
|---|---|---|
| → 1 | Erste REST API | 👉 DU BIST HIER! |
| 2 | Spring Container & DI + CRUD | Noch nicht freigeschaltet |
| 3 | @Controller & Thymeleaf Basics | Noch nicht freigeschaltet |
| 4 | Thymeleaf Forms & MVC-Pattern | Noch nicht freigeschaltet |
| 5 | Konfiguration & Logging | Noch nicht freigeschaltet |
| 6 | DI & AOP im Detail | Noch nicht freigeschaltet |
| 7 | Scopes in Spring | Noch nicht freigeschaltet |
| 8 | WebSockets | Noch nicht freigeschaltet |
| 9 | JAX-RS in Spring Boot | Noch nicht freigeschaltet |
| 10 | Integration & Abschluss | Noch nicht freigeschaltet |
📋 Voraussetzungen
Du brauchst:
- ✅ Java 17 oder höher installiert
- ✅ NetBeans IDE (oder IntelliJ/Eclipse/VS Code)
- ✅ Maven (kommt meist mit der IDE)
- ✅ Optional: curl oder Postman zum Testen
Neu bei Spring Boot? Perfekt – hier startest du von Null! 🚀
⚡ Was du heute baust/lernst:
Deine erste Spring Boot REST Anwendung mit einem REST Service. Erst „Hello World“, dann eine Person-API mit echten Daten. Am Ende hast du eine funktionierende REST API, die JSON zurückgibt – ohne komplizierte Konfiguration. Kein Schnickschnack – einfach Code der läuft.
🎯 Dein Lernpfad heute:
Du arbeitest heute in mehreren aufbauenden Schwierigkeitsstufen. Arbeite in deinem eigenen Tempo durch die Schritte:
🟢 Grundlagen (Schritte 1-6)
Was du lernst:
- Spring Boot Projekt mit Spring Initializr erstellen
- Die Projektstruktur verstehen (pom.xml, Package-Struktur)
- Deinen ersten @RestController schreiben
- HTTP GET Requests beantworten
- Java-Objekte automatisch zu JSON konvertieren lassen
- Eine Person-API mit manuell erstellten Daten bauen
Ziel: Eine funktionierende REST API, die „Hello World“ und eine Liste von Personen als JSON zurückgibt.
🟡 Professional (Schritte 7-8)
Was du lernst:
- Datafaker-Library für realistische Testdaten einsetzen
- 100 Personen mit deutschen Namen generieren
- PathVariable für ID-basierte Abfragen nutzen
- Best Practice: RequestMapping richtig einsetzen
Ziel: Production-Ready API mit realistischen Daten und professioneller Struktur.
🔵 Bonus: Enterprise Features (Schritt 9)
Was du baust/lernst:
- Paginierung implementieren (page & size Parameter)
- Such-Funktionalität nach Namen
- RequestParams richtig einsetzen
- Stream API für Filter-Operationen
Ziel: Enterprise-Level Features, die du in echten Projekten brauchst.
💡 Tipp: Die Grundlagen (Schritte 1-6) sind essenziell für alle weiteren Tage. Professional (Schritt 7-8) ist sehr empfehlenswert, da realistische Daten das Lernen erleichtern. Die Bonus-Features kannst du je nach Interesse und Zeit angehen – sie zeigen dir, was mit Spring Boot alles möglich ist.
💻 Los geht’s!
🟢 GRUNDLAGEN
Schritt 1: Projekt erstellen mit Spring Initializr
Wir nutzen NetBeans mit dem Spring Boot Plugin und erstellen unser Projekt mit dem Spring Initializr.
In NetBeans:
- File → New Project
- Java with Maven → Spring Boot Initializr
- Oder direkt im Browser: https://start.spring.io
Projekt-Konfiguration:
Project: Maven Language: Java Spring Boot: 3.2.5 Group: com.example Artifact: helloworldapi Name: HelloWorldAPI Package name: com.example.helloworldapi Packaging: Jar Java: 17
Dependencies auswählen:
- ✅ Spring Web
- ✅ Spring Boot DevTools (optional, aber hilfreich!)
Klick auf „Generate“ – Projekt wird als ZIP heruntergeladen.
In NetBeans öffnen:
- File → Open Project
- ZIP entpacken und Ordner auswählen
- NetBeans lädt automatisch die Maven Dependencies
Schritt 2: Die Projektstruktur verstehen
Spring Boot hat eine klare Struktur – lass uns reinschauen:
helloworldapi/ ├── pom.xml ← Maven Dependencies ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/helloworldapi/ │ │ │ └── HelloWorldApiApplication.java ← Main-Klasse │ │ └── resources/ │ │ ├── application.properties ← Konfiguration │ │ ├── static/ ← CSS, JS, Bilder │ │ └── templates/ ← HTML Templates │ └── test/ │ └── java/ └── target/ ← Compiled Classes (nach Build)
Die wichtigsten Dateien:
1. pom.xml – Deine Dependencies
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>helloworldapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HelloWorldAPI</name>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<!-- Spring Web - für REST APIs -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- DevTools - Auto-Reload beim Entwickeln -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Was passiert hier?
spring-boot-starter-parent: Spring Boot Basis-Konfigurationspring-boot-starter-web: Bringt alles für REST APIs mit (Tomcat, Spring MVC, Jackson)spring-boot-devtools: Lädt deine App automatisch neu wenn du Code änderstspring-boot-maven-plugin: Erlaubtmvn spring-boot:run
2. HelloWorldApiApplication.java – Deine Main-Klasse
package com.example.helloworldapi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApiApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApiApplication.class, args);
}
}
Was macht @SpringBootApplication?
Das ist 3 Annotations in einer:
@Configuration– Diese Klasse kann Beans definieren@EnableAutoConfiguration– Spring Boot konfiguriert automatisch (z.B. Tomcat starten)@ComponentScan– Scannt nach@Component,@Service,@Controllerin diesem Package
Einfach gesagt: Das ist der Startpunkt deiner App.
Schritt 3: Erste REST API – „Hello World“
Jetzt bauen wir unseren ersten REST Controller!
Erstelle: src/main/java/com/example/helloworldapi/controller/HelloController.java
package com.example.helloworldapi.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World from Spring Boot!";
}
}
Lass uns das Zeile für Zeile durchgehen:
@RestController
- Sagt Spring: „Das ist ein REST Controller“
- Kombiniert
@Controller+@ResponseBody - Bedeutet: Alle Methoden geben direkt Daten zurück (kein HTML-Template)
@GetMapping("/hello")
- Diese Methode reagiert auf HTTP GET Requests
- URL:
http://localhost:8080/hello - Alternativen:
@PostMapping,@PutMapping,@DeleteMapping
public String hello()
- Gibt einfach einen String zurück
- Spring konvertiert automatisch zu HTTP Response
- Content-Type:
text/plain
Schritt 4: Starten & Testen
In NetBeans:
- Rechtsklick auf Projekt → Run
- Oder im Terminal:
mvn spring-boot:run
Was passiert beim Start?
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.5) 2025-10-23T10:23:45.123 INFO 12345 --- [main] c.e.h.HelloWorldApiApplication : Starting HelloWorldApiApplication using Java 17 2025-10-23T10:23:47.456 INFO 12345 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) 2025-10-23T10:23:47.789 INFO 12345 --- [main] c.e.h.HelloWorldApiApplication : Started HelloWorldApiApplication in 2.666 seconds
Spring Boot hat automatisch:
- ✅ Tomcat Server gestartet (Port 8080)
- ✅ Deinen Controller gefunden
- ✅ Die Route
/helloregistriert
Teste es:
Im Browser:
http://localhost:8080/hello
Mit curl:
curl http://localhost:8080/hello
Ergebnis:
Hello World from Spring Boot!
🎉 Glückwunsch! Deine erste REST API läuft!
Schritt 5: Upgrade zu JSON – Person API
„Hello World“ ist nett, aber langweilig. Lass uns echte Daten zurückgeben!
5.1 Person Model erstellen
Erstelle: src/main/java/com/example/helloworldapi/model/Person.java
package com.example.helloworldapi.model;
public class Person {
private Long id;
private String firstname;
private String lastname;
private String email;
// Konstruktoren
public Person() {
// Default-Konstruktor für Jackson
}
public Person(Long id, String firstname, String lastname, String email) {
this.id = id;
this.firstname = firstname;
this.lastname = lastname;
this.email = email;
}
// Getter und Setter
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Warum Getter/Setter?
- Jackson (JSON Library) braucht sie, um Java → JSON zu konvertieren
- Alternative später: Lombok (macht Getter/Setter automatisch)
Warum Default-Konstruktor?
- Jackson braucht ihn, um JSON → Java zu konvertieren
- Ohne Default-Konstruktor: Error beim Deserialisieren!
5.2 PersonController erstellen
Erstelle: src/main/java/com/example/helloworldapi/controller/PersonController.java
package com.example.helloworldapi.controller;
import com.example.helloworldapi.model.Person;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/api/persons")
public class PersonController {
private List<Person> persons = new ArrayList<>();
public PersonController() {
// Erstelle 3 Test-Personen
persons.add(new Person(1L, "Anna", "Müller", "anna.mueller@example.com"));
persons.add(new Person(2L, "Max", "Schmidt", "max.schmidt@example.com"));
persons.add(new Person(3L, "Lisa", "Weber", "lisa.weber@example.com"));
}
@GetMapping
public List<Person> getAllPersons() {
return persons;
}
@GetMapping("/{id}")
public Person getPersonById(@PathVariable Long id) {
return persons.stream()
.filter(p -> p.getId().equals(id))
.findFirst()
.orElse(null);
}
}
Lass uns das durchgehen:
@RequestMapping("/api/persons")
- Basis-URL für ALLE Methoden in dieser Klasse
- Alle Endpoints beginnen mit
/api/persons
@GetMapping (ohne Parameter)
- URL:
http://localhost:8080/api/persons - Gibt alle Personen zurück
@GetMapping("/{id}")
- URL:
http://localhost:8080/api/persons/1 {id}ist ein Platzhalter
@PathVariable Long id
- Spring extrahiert die
{id}aus der URL - Konvertiert automatisch zu Long
- Übergibt sie an die Methode
persons.stream().filter(...)
- Java Stream API
- Filtert die Liste nach ID
findFirst()gibt das erste MatchorElse(null)wenn nicht gefunden
Schritt 6: Testen der Person API
Starte die App neu:
mvn spring-boot:run
Alle Personen:
curl http://localhost:8080/api/persons
Ergebnis:
[
{
"id": 1,
"firstname": "Anna",
"lastname": "Müller",
"email": "anna.mueller@example.com"
},
{
"id": 2,
"firstname": "Max",
"lastname": "Schmidt",
"email": "max.schmidt@example.com"
},
{
"id": 3,
"firstname": "Lisa",
"lastname": "Weber",
"email": "lisa.weber@example.com"
}
]
🎉 Spring Boot hat automatisch Java Objekte → JSON konvertiert!
Das macht Jackson (JSON Library) – ist automatisch dabei bei spring-boot-starter-web.
Eine Person nach ID:
curl http://localhost:8080/api/persons/2
Ergebnis:
{
"id": 2,
"firstname": "Max",
"lastname": "Schmidt",
"email": "max.schmidt@example.com"
}
Was wenn ID nicht existiert?
curl http://localhost:8080/api/persons/999
Ergebnis:
null
(Das ist nicht ideal – morgen lernen wir besseres Error Handling!)
🟡 PROFESSIONAL
Schritt 7: Datafaker für realistische Daten
Drei Personen sind langweilig. Lass uns 100 realistische Personen generieren!
Wir nutzen Datafaker – eine Library die fake aber realistische Daten erzeugt.
7.1 Datafaker zu pom.xml hinzufügen:
<dependency>
<groupId>net.datafaker</groupId>
<artifactId>datafaker</artifactId>
<version>2.0.2</version>
</dependency>
In NetBeans:
- Rechtsklick auf Projekt → Build with Dependencies
- Oder Maven lädt automatisch beim nächsten Start
7.2 PersonController erweitern:
package com.example.helloworldapi.controller;
import com.example.helloworldapi.model.Person;
import net.datafaker.Faker;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@RestController
@RequestMapping("/api/persons")
public class PersonController {
private List<Person> persons = new ArrayList<>();
public PersonController() {
// Datafaker mit deutschem Locale
Faker faker = new Faker(new Locale("de"));
// 100 Personen generieren
for (long i = 1; i <= 100; i++) {
Person person = new Person(
i,
faker.name().firstName(),
faker.name().lastName(),
faker.internet().emailAddress()
);
persons.add(person);
}
}
@GetMapping
public List<Person> getAllPersons() {
return persons;
}
@GetMapping("/{id}")
public Person getPersonById(@PathVariable Long id) {
return persons.stream()
.filter(p -> p.getId().equals(id))
.findFirst()
.orElse(null);
}
}
Was macht Datafaker?
Faker faker = new Faker(new Locale("de"))– Deutsche Namen!faker.name().firstName()– Generiert z.B. „Sebastian“, „Julia“faker.name().lastName()– Generiert z.B. „Müller“, „Schmidt“faker.internet().emailAddress()– Generiert z.B. „max.weber@example.com“
Starte neu und teste:
curl http://localhost:8080/api/persons
Ergebnis: 100 Personen mit realistischen deutschen Namen! 🇩🇪
Schritt 8: Best Practice – Code-Organisation
Momentan haben wir alles im Constructor. Das ist OK für kleine Demos, aber nicht professional.
Best Practice Tipp (Preview für Tag 2):
- Daten-Management gehört in einen Service
- Controller sollten nur HTTP-Requests handhaben
- Morgen lernst du den Spring Container und Dependency Injection
Für Tag 1 ist unsere aktuelle Struktur völlig in Ordnung – du lernst die saubere Architektur morgen! 🎯
🔵 BONUS: ENTERPRISE FEATURES
Schritt 9: Paginierung und Suche
Du bist schnell? Hier sind Features die du in echten Enterprise-Projekten brauchst:
9.1 Paginierung – Nicht alle 100 auf einmal:
// GET /api/persons?page=0&size=10
@GetMapping
public List<Person> getAllPersons(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size
) {
int start = page * size;
int end = Math.min(start + size, persons.size());
if (start >= persons.size()) {
return new ArrayList<>();
}
return persons.subList(start, end);
}
Was macht @RequestParam?
- Liest Query-Parameter aus der URL
defaultValue = "0"– Wenn kein Parameter, nimm 0- Spring konvertiert automatisch String → int
Test:
curl "http://localhost:8080/api/persons?page=0&size=5" # Erste 5 curl "http://localhost:8080/api/persons?page=1&size=5" # Nächste 5 curl "http://localhost:8080/api/persons?page=9&size=10" # Letzte 10
9.2 Suche nach Namen:
// GET /api/persons/search?name=Max
@GetMapping("/search")
public List<Person> searchByName(@RequestParam String name) {
return persons.stream()
.filter(p -> p.getFirstname().toLowerCase().contains(name.toLowerCase())
|| p.getLastname().toLowerCase().contains(name.toLowerCase()))
.toList();
}
Was macht dieser Code?
stream()– Konvertiert Liste zu Streamfilter()– Filtert ElementetoLowerCase()– Macht Suche case-insensitivecontains()– Prüft ob Name enthalten ist||– ODER-Verknüpfung (Firstname ODER Lastname)toList()– Konvertiert Stream zurück zu Liste
Test:
curl "http://localhost:8080/api/persons/search?name=Müller" curl "http://localhost:8080/api/persons/search?name=Max" curl "http://localhost:8080/api/persons/search?name=schmidt"
Bonus-Aufgaben
Weitere Ideen zum Üben:
- Sortierung implementieren:
GET /api/persons?sortBy=firstname- Tipp:
Comparator.comparing(Person::getFirstname)
- Count-Endpoint:
GET /api/persons/count- Gibt Anzahl aller Personen zurück
- Random Person:
GET /api/persons/random- Gibt eine zufällige Person zurück
- Email-Domain Filter:
GET /api/persons?domain=example.com- Filtert nach Email-Domain
Probier dich aus! Das ist deine Spielwiese. 🎮
Wichtige Dokumentation
✅ Checkpoint: Hast du Tag 1 geschafft?
Grundlagen (🟢):
- [ ] Spring Boot Projekt erstellt und gestartet
- [ ] HelloController funktioniert (
/hello) - [ ] Person-Klasse mit Gettern/Settern erstellt
- [ ] PersonController gibt JSON zurück (
/api/persons) - [ ] Eine Person nach ID abrufen funktioniert (
/api/persons/1)
Professional (🟡):
- [ ] Datafaker Dependency hinzugefügt
- [ ] 100 Personen werden generiert
- [ ] Deutsche Namen erscheinen in der API
Bonus (🔵):
- [ ] Paginierung funktioniert (
?page=0&size=10) - [ ] Suche nach Namen funktioniert (
/search?name=...)
Alles ✅? Du bist bereit für Tag 2!
Nicht alles funktioniert?
- Port 8080 belegt? Ändere in
application.properties:server.port=9000 - Maven Dependencies nicht geladen? Rechtsklick auf Projekt → Clean and Build
- JSON kommt nicht? Prüfe ob
spring-boot-starter-webin pom.xml ist - Datafaker Error? Prüfe Internet-Verbindung beim Maven Build
🔥 Elyndras Real Talk:
„Marcus hat letztens beim Kaffee gefragt: ‚Warum ist das so einfach? Wo ist der ganze Server-Setup-Kram?‘
Gute Frage. 2005 hättest du für diese 100-Zeilen-API einen Tag gebraucht:
- Tomcat manuell konfigurieren
- WAR-File bauen
- Deployment-Descriptor schreiben (web.xml)
- Servlet manuell registrieren
Spring Boot macht das in 2 Sekunden beim Start automatisch.
Das ist nicht Magie. Das ist Convention over Configuration.
Spring Boot schaut:
- ‚Ah,
spring-boot-starter-webist da → Starte Tomcat‘ - ‚Ah,
@RestControllergefunden → Registriere Routes‘ - ‚Ah, Person-Objekt zurückgegeben → Konvertiere zu JSON‘
Alles automatisch. Punkt.
Eomma versteht das nicht. Sie sieht mich tippen und sagt: ‚So wenig Code? Das kann nicht funktionieren!‘
Doch, Eomma. Das ist Evolution. Und genau deshalb lieben wir Spring Boot.“
❓ FAQ (Häufige Fragen)
Q: Warum Port 8080?
A: Das ist Spring Boot’s Default. Du kannst es ändern in application.properties:
server.port=9000
Q: Muss ich Tomcat installieren?
A: Nein! Spring Boot hat einen embedded Tomcat. Der ist automatisch dabei.
Q: Warum heißt es @RestController und nicht @Controller?
A: @RestController = @Controller + @ResponseBody. Bedeutet: Gib Daten direkt zurück, nicht HTML-Views.
Q: Was ist der Unterschied zwischen @GetMapping und @RequestMapping?
A: @RequestMapping kann alles (GET, POST, PUT, DELETE). @GetMapping ist nur GET. Benutze @GetMapping – ist klarer!
Q: Warum braucht Person einen Default-Konstruktor?
A: Jackson (JSON Library) braucht ihn, um JSON → Java Objekt zu konvertieren. Ohne Default-Konstruktor: Error!
Q: In-Memory Liste ist doof, die Daten sind weg beim Neustart!
A: Korrekt! Das ist nur für Tag 1. Morgen lernen wir den Spring Container. Ab Tag 5 kommt eine echte Datenbank.
Q: Was ist mit Marcus und diesem alten Holz?
A: Manchmal hilft es, über Code nachzudenken wie Marcus über Holz. Alte Balken haben ihre Geschichte. Legacy-Code auch. Aber neue Werkzeuge (wie Spring Boot) machen die Arbeit leichter. Das gilt für beide. 🪵
(Für mehr darüber, wie alte Strukturen neue Wege gehen… probier mal die Suche mit „herzschmerz“ auf java-developer.online. Nur so als Tipp.)
Q: Kann ich Spring Boot ohne NetBeans nutzen?
A: Klar! IntelliJ, Eclipse, VS Code – alles geht. Oder nur Terminal: mvn spring-boot:run
📅 Nächster Kurstag: Tag 2
Morgen im Kurs / Nächster Blogbeitrag:
„Spring Container & Dependency Injection“
Was du lernen wirst:
- Den Spring Container verstehen (@Component, @Service, @Controller)
- Was Spring Boot automatisch instanziiert
- Dependency Injection richtig einsetzen
- Service-Layer für Business-Logik erstellen
- Best Practice: Constructor Injection
Warum wichtig? Der Spring Container ist das Herz von Spring Boot. Ohne ihn verstanden zu haben, bleibst du an der Oberfläche. Morgen schauen wir unter die Haube und du verstehst, was Spring Boot wirklich macht!
Voraussetzung: Tag 1 abgeschlossen
👉 Zum Blogbeitrag Tag 2 (erscheint morgen)
📚 Deine Fortschritts-Übersicht
📍 Deine Position im Kurs
| Tag | Thema | Status |
|---|---|---|
| ✅ 1 | Erste REST API | 👉 DU BIST HIER! |
| 2 | Spring Container & DI + CRUD | Noch nicht freigeschaltet |
| 3 | @Controller & Thymeleaf Basics | Noch nicht freigeschaltet |
| 4 | Thymeleaf Forms & MVC-Pattern | Noch nicht freigeschaltet |
| 5 | Konfiguration & Logging | Noch nicht freigeschaltet |
| 6 | DI & AOP im Detail | Noch nicht freigeschaltet |
| 7 | Scopes in Spring | Noch nicht freigeschaltet |
| 8 | WebSockets | Noch nicht freigeschaltet |
| 9 | JAX-RS in Spring Boot | Noch nicht freigeschaltet |
| 10 | Integration & Abschluss | Noch nicht freigeschaltet |
Du hast 10% des Kurses geschafft! 💪
Alle Blogbeiträge dieser Serie:
👉 Spring Boot Basic – Komplette Übersicht
📥 Download & Ressourcen
Projekt zum Download:
👉 tag1-spring-boot-basic-v1.0.zip (Stand: 23.10.2025)
Was ist im ZIP enthalten:
- ✅ Vollständiges Maven-Projekt
- ✅ HelloController (Hello World Endpoint)
- ✅ PersonController (mit Datafaker, 100 Personen)
- ✅ Person Model-Klasse
- ✅ Paginierung und Suche (Bonus-Features)
- ✅ README.md mit Anleitungen
- ✅ Konfigurierte pom.xml mit allen Dependencies
Projekt starten:
# ZIP entpacken # In NetBeans öffnen: File → Open Project # Oder im Terminal: cd helloworldapi mvn spring-boot:run
Probleme? Issue melden auf GitHub oder schreib mir: elyndra@java-developer.online
Das war Tag 1 von Spring Boot Basic!
Du kannst jetzt:
- ✅ Spring Boot Projekte mit Spring Initializr erstellen
- ✅ REST Controller mit @RestController schreiben
- ✅ HTTP GET Requests mit @GetMapping beantworten
- ✅ Java-Objekte automatisch zu JSON konvertieren
- ✅ PathVariable und RequestParam einsetzen
- ✅ Datafaker für Testdaten nutzen
- ✅ Paginierung und Suche implementieren (Bonus)
Morgen lernst du den Spring Container und Dependency Injection – das Herz von Spring Boot! 🚀
Keep coding, keep learning!
🖖 Live long and prosper
- 🌐 Website: https://www.java-developer.online
- 💻 GitHub: https://github.com/ElyndraValen
- 📧 Email: elyndra-valen@java-developer.online
Tag 2 erscheint morgen. Bis dahin: Happy Coding!
Tags: #SpringBoot #RestAPI #Java #Tag1 #HelloWorld #JSON #Datafaker #BeginnerFriendly

