HandlerMethodArgumentResolver
通过扩展HandlerMethodArgumentResolver
的方式,实现参数的自定义解析。
public class CustomResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(RequestBody.class) && ParamName.class.isAssignableFrom(parameter.getParameterType());
}
}
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private CustomResolver customResolver;
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(customResolver);
}
}
重写WebMvcConfigurer
接口的addArgumentResolvers
方法,接口注释该接口不会覆盖内置的参数解析器,
如果需要重制内置的解析器,必须设置RequestMappingHandlerAdapter
接口。
RequestMappingHandlerAdapter
通过RequestMappingHandlerAdapter#setCustomArgumentResolvers
将添加自定义的参数解析器。
参数解析器的初始化过程是通过RequestMappingHandlerAdapter#afterPropertiesSet
的方法来实现的。
注意⚠️:自定义解析器是追加在内建解析器的后面的。