JEnterprise Senior Java Workbench
Senior Java · Fachbereich

Spring Enterprise Platform

Spring Boot, Web, Data, Security, Konfiguration und Integrationsgrenzen als zusammenhängende Plattform. Nutze die Seite während Entwurf und Umsetzung: Arbeite an einem konkreten Codepfad und sichere Fachverhalten, Abhängigkeiten und Wartbarkeit mit passenden Tests.

Zur Übersicht

Arbeitsauftrag

Wann verwenden?

Wenn Web-, Data-, Security- oder Konfigurationsfunktionen eines Spring-Services gestaltet werden.

Nicht dafür verwenden

Nicht um fachliche Regeln in Controller, Annotationen oder Frameworkcallbacks zu verstecken.

Definition of Done

Domain bleibt testbar; Adaptergrenzen sind klar; Konfiguration, Fehlervertrag, Security und Integrationstests sind vollständig.

Spring-Abhängigkeiten aus der Domäne heraushalten
Konfiguration und Lifecycle kontrolliert gestalten
Fehlerverhalten und Betriebsfähigkeit mitentwerfen
Bootstrapping und Konfiguration

Konfigurationseigenschaften werden typisiert, validiert und nach Verantwortlichkeit gruppiert. Direkte Zugriffe auf ungeprüfte String-Werte verteilen Konfigurationswissen über die Anwendung.

Auto-Configuration ist nützlich, solange ihre Wirkung sichtbar bleibt. Für kritische Infrastruktur sollten Bedingungen und Overrides dokumentiert werden.

JAVA
@ConfigurationProperties("orders.delivery")
@Validated
public record DeliveryProperties(
        @NotNull URI endpoint,
        @DurationUnit(ChronoUnit.SECONDS)
        Duration timeout,
        @Min(1) int maxAttempts) {
}
Web-Adapter

Controller übersetzen HTTP in einen Application Use Case. Fachliche Regeln gehören nicht in Controller, Exception Handler oder Mapper.

Fehlerantworten benötigen stabile Fehlercodes, Correlation IDs und klare Unterscheidung zwischen fachlicher Ablehnung und technischem Fehler.

JAVA
@RestController
@RequestMapping("/api/orders")
final class OrderController {
    private final CreateOrderUseCase useCase;

    @PostMapping
    ResponseEntity<OrderResponse> create(@Valid @RequestBody CreateOrderRequest request) {
        var result = useCase.create(request.toCommand());
        return ResponseEntity.status(HttpStatus.CREATED)
                .body(OrderResponse.from(result));
    }
}
Transaktionen und Persistenzgrenzen

Eine Transaktion schützt eine fachlich zusammengehörige Zustandsänderung. Sie sollte an einem Application Use Case beginnen und nicht zufällig an Repository-Hilfsmethoden.

Externe Aufrufe innerhalb langer Datenbanktransaktionen erhöhen Sperrdauer und Fehlerkopplung. Outbox oder nachgelagerte Prozesse sind häufig robuster.

JAVA
@Transactional
public OrderId handle(CreateOrderCommand command) {
    Order order = factory.create(command);
    repository.save(order);
    outbox.append(OrderPlaced.from(order));
    return order.id();
}

Praxisartefakt · Spring-Slice

HTTP-Adapter
Validiert Syntax, übersetzt Request und Fehlervertrag.
Application Service
Orchestriert Use Case und Transaktion.
Domain
Entscheidet anhand von Invarianten ohne Spring-Abhängigkeit.
Outbound Port
Speichert Aggregate und publiziert Outbox-Eintrag.
Tests
Domain-Unit-Test, MVC-Slice, Persistenzintegration und Security-Negativtest.
⌂ Cockpit