怎么把参数像HttpServletRequest注入到Controller的method

Posted by hang.li on November 18, 2022

spring-boot

1. 定义 HandlerMethodArgumentResolver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ArkMethodArgumentResolver implements HandlerMethodArgumentResolver {
    /**
     * 添加判断逻辑, 可以引入annotation, instanceof, {@link org.springframework.util.ClassUtils}.
     */
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return true;
    }

    /**
     * 从其他上下文中获取到的参数
     */
    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        return null;
    }
}

2. 添加到spring-boot提供的扩展mvc的方法中

1
2
3
4
5
6
7
@Configuration
public class ArkWebMvcConfigurer implements WebMvcConfigurer {
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
        resolvers.add(new ArkMethodArgumentResolver());
    }
}