Spring Bean, переопределяющий мою конфигурацию ObjectMapper - PullRequest
0 голосов
/ 14 марта 2020

Сегодня возникла проблема, когда зависимость, связанная с конфигурацией, продолжала побеждать, когда дело доходило до какой-то конфигурации ObjectMapper, которую я пытался сделать. Я добавил следующее в свое приложение Spring Boot:

@Configuration
public class CustomObjectMapperConfig {

    @Autowired
    public void configureObjectMapper(ObjectMapper objectMapper) {
        objectMapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    }

}

Я бы на самом деле не использовал временные метки, но для обратной совместимости мне пришлось это сделать. Я поставил точку отладки в рассматриваемой строке, и она попала в цель, но я продолжал возвращать мне даты в формате ISO, который является значением по умолчанию для большинства или наших проектов.

1 Ответ

0 голосов
/ 14 марта 2020

Я наконец понял, что зависимость от компании, которую я привел, имела следующее:

@Configuration
public class ObjectMapperPropertiesConfig {
    /**
     * @deprecated Spring boot jackson properties should be used instead.
     */
    @Deprecated
    @Autowired
    public void setObjectMapper(
            final ObjectMapper objectMapper) {
        objectMapper
            .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, !ignoreUnknown);
    }
...

Этот класс загружался после моего класса, поэтому он всегда побеждал в отношении функции WRITE_DATES_AS_TIMESTAMPS .

Чтобы исправить это, я добавил аннотацию @DependsOn. Это заставило другой бин загружаться первым, давая моему бину шанс выиграть войну конфигурации. Найти правильное название боба было сложно. В итоге все выглядело примерно так:

@DependsOn("path.to.object.ObjectMapperPropertiesConfig")

Примечание: аннотация @Deprecated здесь говорит мне, что этот код будет отсутствовать в будущих версиях в пользу свойств весенней загрузки в любом случае. На данный момент мое изменение будет работать.

...