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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Componentpublic class UserContextResolver implements HandlerMethodArgumentResolver {@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.getParameterType().equals(UserContext.class);}@Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavc, NativeWebRequest request, WebDataBinderFactory dbf) {String userId = request.getHeader("X-User-ID");return new UserContext(userId);}}@Configurationpublic class WebConfig implements WebMvcConfigurer {@Autowired private UserContextResolver userContextResolver;@Overridepublic 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.