目前,我正在使用自定义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(new 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());
}
}
关于java - Java如何创建扩展SimpleModule for addDeserializer的模块类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62025602/