当前,我正在使用自定义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
...
似乎是这样的……我不需要声明一个新的SimpleModule实例并在构造函数中使用它,我可以在构造函数中直接使用addDeserializer
。
public class MyCustomModule extends SimpleModule {
public MyCustomModule() {
initMyCustomModule();
}
final void initMyCustomModule() {
addDeserializer(LocalFile.class, new LocalFileDeserializer());
}
}