java / expert
Snippet
Benutzerdefinierter HandlerMethodArgumentResolver für Domain-Objekte
ArgumentResolver ermöglichen es, benutzerdefinierte Domain-Objekte direkt in Controller-Methoden zu injizieren. Dies hält die Controller-Logik sauber und konzentriert auf die Orchestrierung statt auf den Datenabruf aus Headern oder Sessions.
snippet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Componentpublic class CurrentUserArgumentResolver implements HandlerMethodArgumentResolver {@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.getParameterType().equals(UserAccount.class);}@Overridepublic Object resolveArgument(MethodParameter parameter,ModelAndViewContainer mavContainer,NativeWebRequest webRequest,WebDataBinderFactory binderFactory) {String userId = webRequest.getHeader("X-User-Id");return userRepository.findById(userId).orElseThrow();}}
spring
Erklärung
1
supportsParameter(MethodParameter parameter)
Prüft, ob der Resolver den spezifischen Method-Argument-Typ verarbeiten kann.
2
resolveArgument(...)
Logik zum Extrahieren von Daten aus dem Request und Rückgabe des zu injizierenden Objekts.