Какова цель параметра elementClass в ServerResponse.BodyBuilder? - PullRequest
2 голосов
/ 12 апреля 2020

Существует простой класс модели, который должен использоваться для сериализации тела ответа:

public class MyModel{
  public String name;
}

Использование его в произвольной функции-обработчике Spring 5:

public Mono<ServerResponse> getSometing(ServerRequest request) {
  MyModel model = new MyModel();
  model.name = "abc";

  return ServerResponse.ok().body(Mono.just(model), %anyClass%);
}

Я пытался заменить %anyClass% различными классами: Object, String, MyModel, RuntimeException - и результат всегда одинаков. Каждый раз, когда экземпляр модели сериализуется в json {"name" : "abc"}.

. Он также работает для более сложных моделей с вложенными объектами и массивами.

Не могли бы вы прокомментировать, какова цель второго параметра (elementClass), если он не влияет на результат? Почему мы не можем использовать Object.class всегда?

1 Ответ

0 голосов
/ 12 апреля 2020

Это не anyclass, это тип класса, который вы хотите опубликовать / создать. В вашем случае это может быть MyModel.class, тот, который вы отправляете в ответе.

Если вы прочитаете весеннюю документацию, это будет иметь для вас больше смысла. https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/reactive/function/server/ServerResponse.BodyBuilder.html

Вы можете обновить последнюю строку своего кода: ServerResponse.ok (). Body (Mono.just (model), MyModel.class)

...