0 Tage Serie
java / intermediate
Snippet

Eigene HandlerMethodArgumentResolver für saubere Controller

Eigene Argument-Resolver ermöglichen das automatische Injizieren komplexer Objekte in Controller-Methoden basierend auf Anfragedaten wie Headern oder Session-Attributen. Dies hält die Controller sauber und entfernt repetitiven Boilerplate-Code zum Extrahieren häufig benötigter Daten.

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
@Component
public class UserContextResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().equals(UserContext.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavc, NativeWebRequest request, WebDataBinderFactory dbf) {
String userId = request.getHeader("X-User-ID");
return new UserContext(userId);
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired private UserContextResolver userContextResolver;
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(userContextResolver);
}
}
spring
Erklärung
1
supportsParameter(MethodParameter parameter)
Prüft, ob der Resolver den spezifischen Parametertyp der Methode unterstützt.
2
resolveArgument(...)
Die Logik, um Daten aus der Anfrage zu extrahieren und das Argument-Objekt zu erstellen.
3
addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers)
Registriert den eigenen Resolver in der Spring MVC-Konfiguration.