java / intermediate
Snippet
Benutzerdefiniertes Array-Binding mit generischem StringToCollectionConverter
Das Converter-SPI von Spring wandelt rohe HTTP-Anfrageparameter direkt in typisierte Arrays oder Objekte um. Die Implementierung von Converter<String, Integer[]> registriert eine automatische Konvertierung für semikolongetrennte Query-Parameter, wodurch manuelles Splitten in Controller-Methoden entfällt.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Componentpublic class DelimitedIntegerArrayConverter implements Converter<String, Integer[]> {@Overridepublic Integer[] convert(String source) {if (source == null || source.isBlank()) {return new Integer[0];}return Arrays.stream(source.split(";")).map(String::trim).filter(Predicate.not(String::isEmpty)).map(Integer::valueOf).toArray(Integer[]::new);}}@RestController@RequestMapping("/api/metrics")public class MetricsController {@GetMappingpublic ResponseEntity<Integer> sumMetricIds(@RequestParam("ids") Integer[] metricIds) {int total = Arrays.stream(metricIds).mapToInt(Integer::intValue).sum();return ResponseEntity.ok(total);}}
spring
Erklärung
1
public class DelimitedIntegerArrayConverter implements Converter<String, Integer[]>
Definiert eine typisierte Konvertierungsstrategie, die im zentralen ConversionService von Spring registriert wird.
2
.toArray(Integer[]::new);
Erzeugt über eine Konstruktor-Referenz ein typisiertes Wrapper-Array aus den Elementen des Streams.
3
public ResponseEntity<Integer> sumMetricIds(@RequestParam("ids") Integer[] metricIds)
Der Controller empfängt direkt ein fertig geparstes Integer-Array aus dem Parameter der HTTP-Anfrage.