Существует три уровня решения этой проблемы с форматом даты в Spring.
1) Использование @JsonFormat в полях даты
В этом случае вам нужно использовать одну и ту же аннотацию перед всеми вашими личными участниками.
public class MyBean{
@JsonFormat(pattern="yyyy-MM-dd")
private Date birthday;
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate birthday;
// getters and setters here
}
2) Настройка формата по умолчанию
Если вы хотите настроить настройку по умолчанию формат даты для всех дат в вашем приложении, добавьте следующую строку в файл конфигурации application.properties
или application.yml
:
spring.jackson.date-format=yyyy-MM-dd
К сожалению, это решение не работает с типами дат Java 8 , как LocalDate и LocalDateTime.
3) Настройка вашего Jackson ObjectMapper
Это решение работает как шарм с Java 8 типами дат.
@Configuration
public class ContactAppConfig {
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
builder.simpleDateFormat(DATE_TIME_FORMAT);
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_FORMAT)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
};
}
}
Предлагаю вам использовать третий вариант.