Jackson Object Mapper не работает при расширенной конфигурации, но работает при предоставлении аннотаций уровня класса / поля в Spring Boot - PullRequest
0 голосов
/ 21 сентября 2018

При добавлении защиты jjwt в приложение весенней загрузки приведенная ниже конфигурация сопоставления объектов не работает.

@Configuration
public class CustomObjectMapper extends ObjectMapper {

/**
 * Default serial version id generated.
 */
private static final long serialVersionUID = 1L;

public CustomObjectMapper() {
    this.setSerializationInclusion(Include.NON_EMPTY);
    this.registerModule(new ThreeTenModule());
    this.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    }
}

Здесь добавлены зависимости безопасности

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.7.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-jwt</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
</dependency>

, где, как показано ниже, приведены пометки Джексонаработа на уровне классов / полей.

@JsonInclude(Include.NON_EMPTY) 

Почему настроенный в bean-компоненте настраиваемый объектный преобразователь объектов не использовался для сериализации и десериализации?Какие-нибудь другие библиотеки настроили объектный преобразователь, переопределяющий мой пользовательский преобразователь?

1 Ответ

0 голосов
/ 22 сентября 2018

После долгого исследования я заметил, что аннотированный компонент конфигурации @EnableWebMvc доступен в одной зависимой библиотеке.И из здесь узнал, что @EnableWebMvc отключает автоконфигурацию Spring Boot MVC, предоставляя полный контроль над настройкой MVC заказчика.Конвертеры HTTP-сообщений также будут включены в компонент Spring MVC, который, в свою очередь, отключает мою пользовательскую конфигурацию объекта отображения Джексона.

PS: Поскольку jjwt по умолчанию импортирует зависимость от базы данных Джексона, она попала в мой список подозреваемых.Чувствую себя хорошо, что я мог RCA.Спасибо.

...