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.gradleDatei, 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).