Konventionen sind praktisch – bis sie nicht mehr passen. Diese Übung zeigt, wie du gezielt vom Standard abweichst, ohne das Framework zu bekämpfen.
Das Arcade-Projekt läuft auf Port 8080. Die Startseite erscheint
unter /. Der Server loggt auf INFO-Level. Alles
Konventionen, alles Defaults.
Jetzt ändern wir einige davon.
Ziel: Die Anwendung soll auf Port 9090 starten statt 8080.
Öffne src/main/resources/application.yaml und füge
hinzu:
server:
port: 9090Starte die Anwendung neu:
./gradlew bootRunBeobachte die Konsolenausgabe. Statt
Tomcat started on port 8080 solltest du jetzt
Tomcat started on port 9090 sehen.
Was passiert hier?
Spring Boot liest application.yaml beim Start. Die
Property server.port überschreibt den Default. Die
Auto-Konfiguration für den eingebetteten Tomcat respektiert diese
Einstellung.
Ziel: Alle URLs sollen unter /api
erreichbar sein.
Die Landingpage liegt aktuell unter /. Sie soll unter
/api erscheinen.
Erweitere application.yaml:
server:
port: 9090
servlet:
context-path: /apiNach dem Neustart ist die Landingpage unter
http://localhost:9090/api erreichbar. Der alte Pfad
http://localhost:9090/ liefert einen 404-Fehler.
Wann braucht man das?
Context Paths sind nützlich, wenn mehrere Anwendungen auf einem Server laufen. Oder wenn ein Reverse Proxy bestimmte Pfade erwartet. In Microservice-Architekturen oft anzutreffen.
Ziel: Detailliertere Logs für das eigene Package.
Spring Boot loggt standardmäßig auf INFO-Level. Für Debugging brauchst du manchmal mehr Details.
Füge zur application.yaml hinzu:
logging:
level:
de.digitalfrontiers.arcade: DEBUG
org.springframework.web: DEBUGDie Struktur ist hierarchisch:
de.digitalfrontiers.arcade setzt DEBUG für alle Klassen in
diesem Package und darunter. org.springframework.web
aktiviert Debug-Logging für Spring MVC – nützlich, um Request-Handling
nachzuvollziehen.
Starte neu und beobachte die Konsole. Du siehst jetzt deutlich mehr Output, besonders beim Laden von Controllern und beim Verarbeiten von Requests.
Vorsicht: DEBUG-Logging in Produktion erzeugt Unmengen an Daten. Setze es gezielt ein und nur temporär.
Ziel: Das Spring-Boot-Banner anpassen.
Beim Start zeigt Spring Boot ein ASCII-Art-Banner. Das lässt sich ersetzen.
Erstelle eine Datei src/main/resources/banner.txt:
_ _
/ \ _ __ ___ __ _ __| | ___
/ _ \ | '__/ __/ _` |/ _` |/ _ \
/ ___ \| | | (_| (_| | (_| | __/
/_/ \_\_| \___\__,_|\__,_|\___|
:: Highscore API :: v1.0
Beim nächsten Start erscheint dein eigenes Banner statt des Spring-Logos.
Das Banner lässt sich auch komplett deaktivieren:
spring:
main:
banner-mode: offWozu das Ganze?
In Produktionsumgebungen stört das Banner nur. Für Entwicklung und Demos macht ein eigenes Banner die Anwendung erkennbar. Reine Kosmetik – aber manchmal wichtig.
Hier die vollständige application.yaml nach allen
Änderungen:
spring:
application:
name: arcade-highscore-api
server:
port: 9090
servlet:
context-path: /api
logging:
level:
de.digitalfrontiers.arcade: DEBUGSetze jetzt alles zurück auf die Defaults:
spring:
application:
name: arcade-highscore-api
server:
port: 8080Die Anwendung läuft wieder auf Port 8080, ohne Context Path, mit Standard-Logging. Fünf Zeilen – das ist Spring Boot.
| Default | Property | Beispielwert |
|---|---|---|
| Port 8080 | server.port |
9090 |
Context Path / |
server.servlet.context-path |
/api |
| Log-Level INFO | logging.level.<package> |
DEBUG |
| Spring Banner | spring.main.banner-mode |
off |
Jede dieser Properties ist dokumentiert. Die vollständige Liste findest du in der Spring Boot Dokumentation unter “Common Application Properties” – über 400 Einstellungen, alle mit Defaults, alle überschreibbar.
Das ist die Essenz von Convention over Configuration: Du konfigurierst nur, was du ändern willst. Alles andere funktioniert einfach.