我有一个简单的测试用例。我有一个控制器,它有一个Spring默认不支持的参数,所以我写了一个自定义解析器。
我使用这样的方式创建了模拟mvc实例:
$artist = $em->getRepository("AppBundle:Artist")->find(2);
$entity->setArtist($artist)
// Load the form here. The default value automatically set in the form
然而,Spring还注册了近30个其他的参数解析器,其中一个足够通用,以至于它在我之前被用来解决这个参数。如何设置或排序解析器以便首先调用我的?
答案 0 :(得分:0)
问题在于我使用的Google OAuth库People
类扩展了Map
,而模拟servlet API无法操纵处理程序的注册顺序。
我最终使用反射进入模拟内脏并移除违规处理程序。
答案 1 :(得分:0)
这对我有效,没有思考:
@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);
}
}