java / intermediate
Snippet
Custom Delimited Array Binding with Generic StringToCollectionConverter
Spring's Converter SPI converts raw HTTP request parameters directly into typed arrays or custom objects. Implementing Converter<String, Integer[]> registers an automatic binding mechanism for semicolon-delimited query parameters without requiring repetitive string splitting across multiple controller methods.
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
Breakdown
1
public class DelimitedIntegerArrayConverter implements Converter<String, Integer[]>
Defines a custom type-conversion strategy registered within Spring's core conversion service.
2
.toArray(Integer[]::new);
Constructs a typed primitive wrapper array from the intermediate stream elements using a constructor reference.
3
public ResponseEntity<Integer> sumMetricIds(@RequestParam("ids") Integer[] metricIds)
The controller receives a ready-to-use Integer array parsed directly from a delimited request parameter string.