MinIO in Angular und Spring Boot integrieren

16. Nov. 2023

MinIO ist ein S3-kompatibler Objektspeicher, der sich gut für die lokale Entwicklung und für eigene Deployments eignet. In diesem Artikel zeige ich, wie man ihn in einen bestehenden Angular und Spring Boot Stack einbindet.

Das Setup läuft in drei Schritten: MinIO startet per Docker Compose und stellt die API auf Port 9000 sowie das Webinterface auf Port 9001 bereit. Im Spring Boot Backend wird der offizielle MinIO Java Client eingebunden und als Bean konfiguriert. Da Frontend und Backend auf unterschiedlichen Ports laufen, muss außerdem CORS explizit für localhost:4200 freigegeben werden.

Der interessante Teil ist der Service: Dateien werden per Multipart-Upload entgegengenommen, in MinIO gespeichert und die resultierende URL im Datenbankdatensatz hinterlegt. Das Beispiel nutzt eine Buchverwaltung als konkreten Anwendungsfall: Buchcover hochladen, in MinIO ablegen, im Frontend anzeigen.

Auf der Angular-Seite übernimmt ein FormData-Objekt das Zusammenpacken von JSON-Daten und Bilddatei in einer einzigen HTTP-Anfrage an das Backend.

Den vollständigen Artikel mit allen Codebeispielen gibt es auf Medium.