Настройка микса Джексона в приложении Spring Boot - PullRequest
0 голосов
/ 05 июля 2018

Я создал миксин для своего класса. Сам миксин работает отлично, у большинства людей проблема не в том, где они смешивают аннотации faterxml / codehaus. Я протестировал его в модульном тесте, создав ObjectMapper «вручную» при использовании метода addMixIn - он работал просто отлично.

Я хочу использовать этот миксин для изменения ответов jsons, возвращаемых с моих конечных точек REST. Я пытался настроить ObjectMapper Spring Boot разными способами:

BuilderCustomizer:

@Bean
public Jackson2ObjectMapperBuilderCustomizer addMixin(){
    return new Jackson2ObjectMapperBuilderCustomizer() {
        @Override
        public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
            jacksonObjectMapperBuilder.mixIn(MyClass.class, MyClassMixin.class);                
        }
    };
}

Builder:

@Bean
Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
    return new Jackson2ObjectMapperBuilder().mixIn(MyClass.class, MyClassMixin.class);
}

Преобразователь:

@Bean
public MappingJackson2HttpMessageConverter configureJackson(){
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    ObjectMapper mapper = new ObjectMapper();
    mapper.addMixIn(MyClass.class, MyClassMixin.class);
    converter.setObjectMapper(mapper);
    return converter;
}

ObjectMapper:

@Autowired(required = true)
public void configureJackon(ObjectMapper jsonMapper){
    jsonMapper.addMixIn(MyClass.class, MyClassMixin.class);
}

Ни одна из этих работ.

1 Ответ

0 голосов
/ 05 июля 2018

Это может зависеть от версии Spring Boot, но согласно 76.3 Настройка Jackson ObjectMapper , определяющего новый компонент Jackson2ObjectMapperBuilderCustomizer, достаточна

Контекстный Jackson2ObjectMapperBuilder может быть настроен одним или несколькими компонентами Jackson2ObjectMapperBuilderCustomizer. Такие bean-компоненты настройки можно заказать (собственный настройщик Boot имеет порядок 0), что позволяет применять дополнительную настройку как до, так и после настройки Boot.

...