Java Как создать класс модуля, расширяющий SimpleModule для addDeserializer? - PullRequest
0 голосов
/ 26 мая 2020
• 1000 Может, я могу прописать весь класс в конструкторе? Я пробовал ниже, но это не удалось,
public class MyCustomModule extends SimpleModule {
    private static final SimpleModule module = new SimpleModule();

    public MyCustomModule() {
        initMyCustomModule();
    }

    final void initMyCustomModule() {
        module.addDeserializer(LocalFile.class, new LocalFileDeserializer());
    }
}

// In app start
mapper.registerModule(new MyCustomModule());

Я видел, что initMyCustomModule вызывается во время запуска приложения, но мой класс десериализации не вызывался при попытке десериализации моего объекта из запроса, я думал потому что я должен зарегистрировать модуль внутри своего класса, например: mapper.registerModule (новый модуль MyCustomModule ().)? Я также заметил, что существует метод переопределения для

@Override
public void setupModule(SetupContext context)

, но я не уверен, как использовать его для addDeserializer в контексте ...

1 Ответ

0 голосов
/ 26 мая 2020

Похоже, это работает ... Мне не нужно объявлять новый экземпляр SimpleModule и использовать его в конструкторе, я могу напрямую использовать addDeserializer в своем конструкторе ..

public class MyCustomModule extends SimpleModule {
    public MyCustomModule() {
        initMyCustomModule();
    }

    final void initMyCustomModule() {
        addDeserializer(LocalFile.class, new LocalFileDeserializer());
    }
}
...