基于this setup(在JavaEE应用程序中使用Jackson作为JAXB提供程序):如何注册我的MixIn modules?
在使用JAX-RS客户端功能的客户端应用程序中,它会自动注册。我见过this SO post,但是我从哪里获得ObjectMapper?我试图在我的ServletContextListener
中创建并在那里注册模块。但是当然,映射器实例将在contextInitialized
方法结束后处理。
答案 0 :(得分:0)
使用this post中显示的ContextResolver
。使用@Provider
注释时,应从扫描中选取ContextResolver
(假设您使用的是扫描类型;包扫描或类路径扫描)
@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
final ObjectMapper mapper = new ObjectMapper();
public ObjectMapperContextResolver() {
mapper.registerModule(new MixinModule());
}
@Override
public ObjectMapper getContext(Class<?> type) {
return defaultMapper;
}
}
会发生什么,杰克逊JAX-RS提供商提供的MessageBodyReader/MessageBodyWrite
会调用getContext
方法来获取ObjectMapper