2012-10-04 3 views
5

스프링 데이터 REST example project을 기반으로하는 프로젝트가 있으며이 wiki page을 기반으로 Jackson module을 사용하여 사용자 지정 직렬화를 수행하려고합니다.스프링 데이터 용 잭슨 모듈 등록하기

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는 말한다 : 당신의 ApplicationContext의 범위 내에서 선언

모든 모듈 빈은 수출에 의해 포착하고 ObjectMapper에 등록됩니다

여기 내 잭슨 모듈입니다.

저는 아직 봄에 익숙하지 않아 모듈 빈 정의를 잘못된 위치에 넣을 수 있습니다.

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

내가 setupModule에서 로그 문을 볼 수 없습니다,하지만 난 같은 패키지의 다른 클래스에 대한 로그 출력을 볼 수 있습니까 : 현재는 repositories-export.xml에서 수입되는, src/main/resources/META-INF/spring-data-rest/shared.xml에 있습니다.

스프링 데이터 REST 1.0.0.RC2를 사용하고 있습니다.

+0

혹시이 문제를 해결하기위한 방안을 찾으셨습니까? –

+0

아니요,하지만 스프링 데이터 포럼에서 요청한 내용 일 수도 있습니다. http://forum.springsource.org/showthread.php?130782-Spring-Data-REST-registering-a- Jackson-for-serialization –

답변

4

는 내가 사용하던 내 경우에 (아마도이 ​​스택 오버플로 게시 이후 변경된 있지만) 당신이에 연결 한 위키 항목에 설명 된 솔루션

를 사용하여 성공을 거두었습니다 봄을-데이터 rest- [email protected]

코드가 정확하고 응용 프로그램 컨텍스트가 올바르게로드되어 있어야 제공됩니다. 작동하지 않는 이유가 없습니다.

나는 날짜 포맷의 사용 예시 내 간단한 모듈 첨부했습니다 : 아마도

@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'")); 
    } 
} 

가이 문제 또는 스프링 데이터 - 인 가리키고 잭슨 모듈의 경우 윤곽을 사용할 수있다 나머지 - mvcweb.

+0

솔루션을 공유해 주셔서 감사합니다! 최근 [email protected]로 업데이트하고 예제 프로젝트에서와 같이 코드 기반 구성으로 마이그레이션했습니다. 이제 CustomModule에 @Component를 추가하여 작업하도록했습니다. –

+0

작동하지 않는 것 같습니다. 구성 요소가로드되고 인스턴스가 생성 된 것을 볼 수 있지만 setupModule()이 호출되지 않습니다. 왜? –