私が推奨できる回避策の 1 つは、独自の HandlerMethodArgumentResolver を作成し、このHandlerMethodArgumentResolver をトリガーして特定の引数に対して実行することです。たとえば、JsonArgument というアノテーションを作成し、これらの引数に @JsonArgument のアノテーションを付けます。
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
if (methodParameter.getParameterAnnotation(JsonArgument.class)!=null) return true;
これで、この HandlerMethodArgumentResolver で、特定のリクエスト パラメータ値 (Json 文字列など) を取得して、必要な型に変換できます。
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mav, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
...
jsonString = webRequest.getParameter(parameterName);
Class<?> type = methodParameter.getParameterType();
//Convert jsonString to object of appropriate type..
このようにして、注釈を付けたタイプのみに変更が集中します。