java / intermediate
Snippet
Pattern Matching Switch for Workflow Control Flow in Spring Services
Modern Java switch pattern matching and guarded patterns (when clauses) enable concise, exhaustive control flow over sealed type hierarchies inside Spring business logic services without casting or nested if-statements.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public sealed interface OrderEvent permits OrderCreated, OrderPaid, OrderCancelled {}public record OrderCreated(String orderId) implements OrderEvent {}public record OrderPaid(String orderId, double amount) implements OrderEvent {}public record OrderCancelled(String orderId, String reason) implements OrderEvent {}@Servicepublic class OrderWorkflowService {public String handleEvent(OrderEvent event) {return switch (event) {case OrderCreated c -> "Initializing order: " + c.orderId();case OrderPaid p when p.amount() > 10_000.0 -> "High-value payment received for: " + p.orderId();case OrderPaid p -> "Standard payment processed for: " + p.orderId();case OrderCancelled c -> "Order aborted due to: " + c.reason();};}}
spring
Breakdown
1
public sealed interface OrderEvent permits OrderCreated, OrderPaid, OrderCancelled {}
Restricts domain state representations to a closed set of permitted records.
2
return switch (event) {
Evaluates the control flow exhaustively across all permitted event types without needing a default branch.
3
case OrderPaid p when p.amount() > 10_000.0 ->
Applies a pattern guard condition directly within the switch control structure.