Zeit für Praxis. In dieser Übung machst du das Arcade-Projekt konfigurierbar und legst ein Entwicklungsprofil an.
Erweitere die application.yaml um arcade-spezifische
Konfiguration:
spring:
application:
name: arcade-highscore-api
server:
port: 8080
# Eigene Konfiguration
arcade:
title: "Retro Arcade"
max-leaderboard-entries: 10
featured-game: pacmanPasse den HomeController an, um die Werte zu nutzen:
@Controller
public class HomeController {
private final GameService gameService;
@Value("${arcade.title}")
private String arcadeTitle;
@Value("${arcade.featured-game}")
private String featuredGame;
public HomeController(GameService gameService) {
this.gameService = gameService;
}
@GetMapping("/")
public String home(Model model) {
model.addAttribute("games", gameService.getAllGames());
model.addAttribute("title", arcadeTitle);
model.addAttribute("featured", featuredGame);
return "index";
}
}Erweitere src/main/resources/templates/index.html, um
den Titel anzuzeigen. Füge im Header-Bereich ein:
<h1 th:text="${title}">Arcade</h1>Starte die Anwendung und prüfe, ob “Retro Arcade” angezeigt wird.
Erstelle eine neue Datei
src/main/resources/application-dev.yaml:
# Entwicklungsprofil
arcade:
title: "Retro Arcade [DEV]"
logging:
level:
de.digitalfrontiers.arcade: DEBUG
# Zeige SQL-Queries (für später, wenn DB dazukommt)
spring:
jpa:
show-sql: trueStarte mit aktiviertem Profil:
./gradlew bootRun --args='--spring.profiles.active=dev'Beobachte: - Der Titel zeigt jetzt “[DEV]” - In den Logs erscheinen DEBUG-Meldungen
Ohne Profil:
./gradlew bootRunDer Titel ist wieder “Retro Arcade” ohne Suffix.
Erstelle application-prod.yaml:
# Produktionsprofil
arcade:
title: "Retro Arcade"
max-leaderboard-entries: 50
logging:
level:
root: WARN
de.digitalfrontiers.arcade: INFO
server:
tomcat:
accesslog:
enabled: trueDamit du nicht jedes Mal --spring.profiles.active=dev
tippen musst, setze einen Default in application.yaml:
spring:
application:
name: arcade-highscore-api
profiles:
active: dev # Default für lokale Entwicklung
server:
port: 8080
arcade:
title: "Retro Arcade"
max-leaderboard-entries: 10
featured-game: pacmanJetzt startet die Anwendung immer mit dev-Profil, es sei
denn, du überschreibst es explizit.
Nach der Übung hast du:
| Datei | Zweck |
|---|---|
application.yaml |
Basis-Konfiguration + Default-Profil |
application-dev.yaml |
Entwicklungsumgebung |
application-prod.yaml |
Produktionsumgebung |
Die Anwendung verhält sich unterschiedlich je nach aktivem Profil:
| Profil | Titel | Log-Level |
|---|---|---|
| (keins/dev) | “Retro Arcade [DEV]” | DEBUG |
| prod | “Retro Arcade” | INFO |
Überschreibe den Titel per Umgebungsvariable:
# Linux/Mac
export ARCADE_TITLE="Meine Arcade"
./gradlew bootRun
# Windows PowerShell
$env:ARCADE_TITLE="Meine Arcade"
./gradlew bootRunDie Umgebungsvariable hat Vorrang vor der YAML-Datei. So funktioniert Konfiguration in Container-Umgebungen.
| Konzept | Anwendung |
|---|---|
@Value |
Properties in Controller injiziert |
| Profile | dev und prod mit unterschiedlicher
Konfiguration |
| Default-Profil | spring.profiles.active: dev |
| Umgebungsvariablen | ARCADE_TITLE überschreibt YAML |
Das Arcade-Projekt ist jetzt flexibel konfigurierbar – ohne eine Zeile Java-Code zu ändern.