I am using Spring MVC (via Spring Boot) and have integrated Swagger API documentation using the swagger-spring-mvc library.
I have a class that looks something like
@ApiModel
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Model {
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonProperty("myDate")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private final LocalDateTime myDateTime;
}
For OpenApi (Swagger 3.0) and SpringDoc the following global configuration could be used.
static {
SpringDocUtils.getConfig().replaceWithSchema(Money.class, new StringSchema());
}
Turns out that dataType
is completely ignored in the current version of the Swagger Spring MVC library. I found a short discussion on it here:
https://github.com/springfox/springfox/issues/602
Looks like it could be included in version 2 once that is out.
EDIT: Although version 2 says it supports dataType, it doesn't appear to be working at this time. A better approach for my needs is to configure the documentation settings with a direct model substitution like this:
@Bean
public Docket swaggerSpringMvcPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.directModelSubstitute(Money.class, String.class);
}