java / expert
Snippet
Custom HandlerMethodArgumentResolver for Typed Request Header Arrays
Custom `HandlerMethodArgumentResolver` implementations allow Spring MVC applications to automatically parse raw HTTP request parameters or headers into complex Java data structures, such as transforming comma-separated values directly into typed Java `String[]` arrays before hitting controller methods.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class StringArrayHeaderResolver implements HandlerMethodArgumentResolver {@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.hasParameterAnnotation(CsvHeaderArray.class) &¶meter.getParameterType().equals(String[].class);}@Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {String headerValue = webRequest.getHeader(parameter.getParameterAnnotation(CsvHeaderArray.class).value());return headerValue != null ? headerValue.split("\\s*,\\s*") : new String[0];}}
spring
Breakdown
1
public class StringArrayHeaderResolver implements HandlerMethodArgumentResolver
Implements the Spring MVC SPI contract for resolving custom controller method arguments.
2
parameter.hasParameterAnnotation(CsvHeaderArray.class) && parameter.getParameterType().equals(String[].class)
Checks if target method parameter targets the custom annotation and expects a String array.
3
String headerValue = webRequest.getHeader(parameter.getParameterAnnotation(CsvHeaderArray.class).value());
Retrieves raw header string value from the incoming web request context.
4
return headerValue != null ? headerValue.split("\\s*,\\s*") : new String[0];
Splits CSV string into a clean String array using regex, returning an empty array on null values.