Skip to content

Phase 4 – Frameworks und Webanwendungen (3–4 Monate)

Spring Boot, Spring Core und Spring Data JPA

  • Spring Core: Dependency Injection (@Bean, @Autowired), IoC Container.
  • Spring Boot: Auto-Configuration, Starters (spring-boot-starter-web, spring-boot-starter-data-jpa), application.yml.
  • Spring Data JPA: Repositories (CrudRepository, JpaRepository), Queries mit @Query, Paginierung.
  • Beispiel: Erstellen von REST Endpoints für die Verwaltung von Aufgaben (CRUD) in einer Task-App.

Spring Security (JWT, OAuth2)

  • Konzepte: Authentication, Authorization, Security Filters.
  • JWT: Erstellen und Validieren von Tokens, Verwendung von JwtAuthenticationFilter.
  • OAuth2: Konfiguration eines Resource Servers, Integration mit einem Anbieter (z. B. Google).
  • Beispiel: Schützen von Task Endpoints mit JWT und Rollen (ADMIN, USER).

Unit- und Integrationstests

  • Unit Tests: JUnit 5, Mockito (@Mock, @InjectMocks), Testen der Business Logic.
  • Integration Tests: @SpringBootTest, @WebMvcTest, H2 Datenbank für Tests.
  • Testcontainers: Tests mit PostgreSQL in Docker-Containern.
  • Beispiel: Testen von Services und Endpoints der Task-App.

RESTful APIs und Dokumentation mit Swagger

  • REST: HTTP-Methoden, Statuscodes, RESTful Prinzipien.
  • Spring REST: @RestController, @RequestMapping, @PathVariable.
  • Swagger: Konfiguration von springdoc-openapi, Annotation mit @Operation.
  • Beispiel: Dokumentation der Task-App Endpoints mit Swagger UI.

Einführung in GraphQL

  • Konzepte: Queries, Mutations, Schema.
  • Spring Boot mit GraphQL: Einrichtung mit spring-boot-starter-graphql.
  • Beispiel: Erstellen einer GraphQL Query, um Aufgaben nach Status aufzulisten.

Grundlegende Frontend-Integration

  • Thymeleaf: Templates zur Darstellung von HTML-Seiten mit Spring Boot.
  • Beispiel: Erstellen einer einfachen Web-Oberfläche zum Anzeigen und Erstellen von Aufgaben.

Build Tools: Maven und Gradle

  • Maven: Struktur von pom.xml, Abhängigkeiten, Plugins.
  • Gradle: build.gradle Datei, Tasks, Dependency Management.
  • Beispiel: Konfiguration der Task-App mit Maven und Gradle.

Projektbereitstellung

  • Plattformen: Railway, Heroku, AWS (Elastic Beanstalk).
  • Schritte: Verpacken als JAR, Konfiguration von CI/CD mit GitHub Actions.
  • Beispiel: Bereitstellung der Task-App auf Railway mit PostgreSQL.

Abschlussprojekt

Task-Management-System
- Datenbank: Task (Titel, Beschreibung, Status) und User Tabellen (1:N-Beziehung).
- Java: REST API mit Spring Boot, Spring Data JPA für CRUD.
- Security: JWT Authentication, Rollen (ADMIN, USER).
- Tests: Unit Tests (Services) und Integration Tests (Endpoints mit Testcontainers).
- Dokumentation: Swagger UI mit Beschreibungen der Endpoints.
- Optional: Hinzufügen einer GraphQL Query zum Auflisten von Aufgaben und einer Thymeleaf-Oberfläche für Interaktionen.
- Git: Commits pro Feature (z. B. feature/rest-api, feature/security).
- Veröffentlichung: Auf GitHub mit README (Setup, Endpoints, Bereitstellung).

Ressourcen