2015-04-21 17 views
0

基於this setup(在JavaEE應用程序中使用Jackson作爲JAXB提供程序):如何註冊我的MixIn modules在JavaEE應用程序中註冊Jackson MixIn

在使用它會自動註冊的JAX-RS客戶端功能,我的客戶端應用程序。我見過this SO post,但我從哪裏獲得的ObjectMapper?我試着在我的ServletContextListener上創建並在那裏註冊模塊。但當然contextInitialized方法結束後,映射器實例將被設置。

回答

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

+0

非常感謝@peeskillet –