Я бы хотел использовать @JsonView для параметра с методом @PostMapping в прокси @FeignClient.
Но, похоже, это не работает.
Я читал, что он работает с версией Джексона выше 2.5 I, и я использую 2.9.3
Вот класс уведомлений с аннотациями JsonView на геттерах.
У меня есть два вида: Простой и Подробный , которые расширяют Простой . Поэтому здесь поле message не должно быть сериализовано.
@Setter
@ToString
public class Notification {
fields ...
@JsonView(View.Simple.class)
public NotificationService getService() {
return service;
}
@JsonView(View.Simple.class)
public NotificationSeverity getSeverity() {
return severity;
}
@JsonView(View.Detailed.class)
public String getMessage() {
return message;
}
@JsonView(View.Simple.class)
public Date getDate() {
return date;
}
@JsonView(View.Simple.class)
public Long getIdUser() {
return idUser;
}
}
Я вызываю службу из RestController
Long idNotification = this.proxyNotification.createNotification(notification);
И FeignClient
@Component
@FeignClient(name = "notification-server", url = "${feign.url.notification}")
public interface ProxyMicroserviceNotification {
@PostMapping(value = "notification-server/notifications/create")
Set<Long> createNotifications(@RequestBody @JsonView(View.Simple.class) Notification []
notifications);
@PostMapping(value = "notification-server/notification/create")
Long createNotification(@RequestBody @JsonView(View.Simple.class) Notification notification);
}
В удаленной службе у меня все еще есть поле сообщения, поэтому фильтр не работает должным образом. На самом деле здесь мне не нужно использовать View, и я мог бы отправить все поля класса, но я бы хотел, чтобы он работал на тот случай, если он мне понадобится для другой цели.