Java我如何创建一个模块类,该模块类扩展了addDeserializer的SimpleModule?

问题描述 投票:0回答:1

当前,我正在使用自定义JsonDeserialize类注册我的类,并在应用程序开始时声明了一个新的SimpleModule,类似

public static void configure(ObjectMapperModule mapper) {
  SimpleModule module = new SimpleModule();
  module.addDeserializer(LocalFile.class, new LocalFileDeserializer());
  // module add more deserializer class
  mapper.registerModule(module);
}

无论如何,我是否可以创建一个扩展SimpleModule的类,因此可以在构造函数中注册所有类?我在下面尝试过,但是失败了,

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()。module)?我也注意到有一个替代方法

@Override
public void setupModule(SetupContext context)

但是我不确定如何将其用于上下文addDeserializer ...

java module jackson objectmapper
1个回答
0
投票

似乎是这样的……我不需要声明一个新的SimpleModule实例并在构造函数中使用它,我可以在构造函数中直接使用addDeserializer

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

    final void initMyCustomModule() {
        addDeserializer(LocalFile.class, new LocalFileDeserializer());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.