在JavaEE应用程序中注册Jackson MixIn

时间:2015-04-21 09:03:00

标签: java-ee jaxb jackson jax-rs mixins

基于this setup(在JavaEE应用程序中使用Jackson作为JAXB提供程序):如何注册我的MixIn modules

在使用JAX-RS客户端功能的客户端应用程序中,它会自动注册。我见过this SO post,但是我从哪里获得ObjectMapper?我试图在我的ServletContextListener中创建并在那里注册模块。但是当然,映射器实例将在contextInitialized方法结束后处理。

1 个答案:

答案 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