2012-10-04 15 views
5

Mam działający projekt oparty na Spring Data REST example project i próbuję wykonać niestandardową serializację przy użyciu Jackson module opartej na tym wiki page.Rejestracja modułu Jackson dla Spring Data REST

Oto mój moduł Jackson:

public class CustomModule extends SimpleModule { 
    public static Logger logger = LoggerFactory.getLogger(CustomModule.class); 

    public CustomModule() { 
     super("CustomModule", new Version(1, 0, 0, null)); 
    } 

    @Override 
    public void setupModule(SetupContext context) { 
     logger.debug("CustomModule.setupModule"); 
     SimpleSerializers simpleSerializers = new SimpleSerializers(); 
     simpleSerializers.addSerializer(new CustomDateTimeSerializer()); 
     context.addSerializers(simpleSerializers); 
    } 

} 

wiki page mówi:

Wszelkie fasola Moduł ogłoszony w ramach swojej ApplicationContext zostanie odebrany przez eksportera i zarejestrowany z ObjectMapper.

Nadal jestem całkiem nowy dla Spring, więc mógłbym po prostu umieścić moją definicję fasoli modułowej w niewłaściwym miejscu; Obecnie jest to w src/main/resources/META-INF/spring-data-rest/shared.xml, który jest importowany z repositories-export.xml:

<bean id="customModule" class="org.hierax.wpa.schema.mapping.CustomModule" /> 

nie widzę oświadczenie dziennika w setupModule, ale ja widzę wyjście dla innych klas zalogować w tym samym opakowaniu.

Używam Spring Data REST 1.0.0.RC2.

+0

Czy kiedykolwiek znaleźć rozwiązanie tego? –

+0

Nie, ale zapytałem na forum Spring Data, a może dostanie tam odpowiedź: http://forum.springsource.org/showthread.php?130782-Spring-Data-REST-register- Jackson-module-for-serialization –

Odpowiedz

4

miałem sukces przy użyciu rozwiązania przedstawionego we wpisie wiki, które zostały powiązane z (choć może to się zmieniło od tego przepełnienia stosu post)

W moim przypadku używałem wiosna-data-rest- [email protected]

Twój kod wydaje się być poprawny i pod warunkiem, że kontekst aplikacji jest ładowany poprawnie. Nie widzę powodu, aby nie działał.

Mam załączeniu mój prostsze moduł, który jest przykładem wykorzystania datę formater:

@Component 
public class JsonMarshallingConfigModule extends SimpleModule { 

    public JsonMarshallingConfigModule() { 
    super("JsonMarshallingConfigModule", new Version(1, 0, 0, "SNAPSHOT")); 
    } 

    @Override public void setupModule(SetupContext context) { 
    context.getSerializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'")); 
    } 
} 

Może to być wykorzystane do przedstawienia czy jest to rzeczywiście moduł Jackson to jest problem lub wiosna-data- rest-mvcweb.

+0

Dzięki za podzielenie się swoim rozwiązaniem! Ostatnio zaktualizowałem do [email protected] i zmigrowałem do konfiguracji opartej na kodzie, jak w przykładowym projekcie, i teraz mam to działa z dodaniem @Component na CustomModule. –

+0

Nie wydaje się, aby to działało. Komponent jest załadowany, widzę, że instancja została utworzona, jednak setupModule() nie jest wywoływana. Czemu? –

Powiązane problemy