Мое приложение jhipster v2.23.1 использует пользовательские сериализаторы и десериализаторы для разбора JSON, которые я регистрирую как модуль в JacksonConfiguration
. REST API работает, как и ожидалось, с использованием моего пользовательского сопоставления.
Однако JSON, отображаемый в автоматически созданной документации swagger, не отражает пользовательское сопоставление. Я надеялся, что swagger автоматически обнаружит пользовательские сериализаторы/десериализаторы, но, поскольку это не так, как я могу заставить swagger отображать мой пользовательский формат JSON вместо того, который он обнаруживает сам по себе?
На основе документации Springfox по адресу http://springfox.github.io/springfox/docs/current/#configuring-springfox я реализовал интерфейс:
ApplicationListener<ObjectMapperConfigured>
в моем bean-компоненте SwaggerConfiguration. Я вижу, что метод onApplicationEvent(ObjectMapperConfigured event)
вызывается дважды. В первый раз маппер сериализует мой объект, как и ожидалось, во второй раз - нет. Также не имеет значения, зарегистрирую ли я свой модуль в картографе или нет. Объект, с которым я здесь работаю, — это контакт.
@Override
public void onApplicationEvent(ObjectMapperConfigured event) {
ObjectMapper mapper = event.getObjectMapper();
// Custom serialization for Contact objects
SimpleModule contactModule = new SimpleModule("Contact Module");
contactModule.addSerializer(new ContactSerializer(Contact.class));
contactModule.addDeserializer(Contact.class, new ContactDeserializer(Contact.class));
mapper.registerModule(contactModule);
// My custom object
Contact c = new Contact();
c.setCity("Springfield");
c.setEmail("[email protected]");
String contactJsonStr = null;
try {
contactJsonStr = mapper.writeValueAsString(c);
} catch(JsonProcessingException e) {
e.printStackTrace();
}
System.out.println("Serialized Contact: " + contactJsonStr);
}
Как я могу заставить Springfox использовать мой пользовательский сериализатор для создания моей документации по чванству? Или я должен использовать совершенно другой подход?