我有一个简单的测试用例。我有一个控制器,它的参数类型是Spring默认不支持的,所以我写了一个自定义的解析器。
我创建正在使用的模拟mvc实例,如下所示:
mvc = MockMvcBuilders.standaloneSetup(controller).setCustomArgumentResolvers(new GoogleOAuthUserResolver()).build();然而,Spring也注册了近30个其他参数解析器,其中一个足够通用,它被用来在我之前解决参数。如何设置或排序解析器,以便首先调用我的解析器?
发布于 2017-03-05 11:21:27
问题是,我正在使用的People类和Google OAuth库扩展了Map和mock servlet API,它们没有提供任何方法来操作处理程序的注册顺序。
我最终使用反射进入mock内部并删除了有问题的处理程序。
发布于 2018-10-24 20:14:56
这对我来说很有效,不用考虑:
@RequiredArgsConstructor
@Configuration
public class CustomerNumberArgumentResolverRegistration {
private final RequestMappingHandlerAdapter requestMappingHandlerAdapter;
@PostConstruct
public void prioritizeCustomArgumentResolver () {
final List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<>(Objects.requireNonNull(requestMappingHandlerAdapter.getArgumentResolvers()));
argumentResolvers.add(0, new CustomerNumberArgumentResolver());
requestMappingHandlerAdapter.setArgumentResolvers(argumentResolvers);
}
}https://stackoverflow.com/questions/42523323
复制相似问题