2014-12-09 1 views
1

사용자 정의 ObjectMapper (Jackson)를 사용하여 JSON 페이로드를 Java 객체로 변환하는 쉬운 방법이 있습니까? 아니면 사용자 정의 유형 변환기를 제공해야합니까? 프로세서를 사용할 수는 있지만 스트림 정의의 입력 및 출력 유형을 사용하는 것이 좋을 것입니다.Spring XD Json에서 Java로 변환하기위한 사용자 정의 ObjectMapper 사용

두 번째 경우 : Java 용 application/json에 대한 사용자 정의 유형 변환기를 제공 할 수 있습니까?

"customMessageConverters가 정의 된 순서대로 표준 변환기 뒤에 추가되므로 일반적으로 기존 변환기를 바꾸는 것보다 새로운 미디어 형식의 변환기를 추가하는 것이 더 쉽습니다."

나는 기존의 "application/json"변환기가 있다고 생각하지만, 언뜻보기에 기존 변환기를 대체 할 수 있다면 더 많은 정보를 찾을 수 없습니다.

감사합니다. Peter

답변

1

streams.xml을 보면 관련 구성을 볼 수 있습니다. 구성된 목록은 CompositeMessageConverter을 구성하는 데 사용되며 변환을 수행 할 수있는 메시지를 찾을 때까지 모든 MessageConverter를 목록 순서로 방문하여 null이 아닌 결과를 반환합니다. AbstractFromMessageConverter을 모두 상속받는 후보 메시지 변환기 목록을 필터링하여 변환하도록 구성된 (즉, inputType 또는 outputType 값을 정의하는) 각 모듈 인스턴스에 대해 CompositeConverter 인스턴스가 만들어집니다. 이 목록은 에서 으로 바뀌 었습니다. public boolean supportsTargetMimeType (MimeType mimeType) (여기서 mimeType은 input/outputType의 값임). CompositeMessageConverter는 해당 MessageChannel에 삽입되어 페이로드를 변환합니다.

몇 가지 작업을 수행 할 수 있습니다. xd.messageConverters bean 정의를 겹쳐 쓸 수 있습니다. 예를 들어, JsonToPojoMessageConverterPojoToJsonMessageConverter을 자신의 하위 클래스로 바꿀 수 있습니다. 또한 위 변환기 앞에 목록에 고유 한 구현을 삽입하고 구현시 사용자 지정 JSON 매퍼가 필요한 특정 도메인 개체 만 일치시킬 수도 있습니다. 또 다른 가능성은 자신의 MIME 형식을 정의하고 해당 MIME 형식의 변환기를 customMessageConverters으로 제공하는 것입니다. 어떤 경우에도 다음 가이드 라인을 따르십시오. extending Spring XD