2014-04-09 3 views
0

mongo db에서 문서를 읽고 CMS에 문서를 쓰는 Spring 배치 작업을 작성하려고합니다. (지금 WireMock으로 먼저 테스트 해 보겠습니다.) 문서의 정확한 구조를 지정하지 않고 작업 및 itemreader를 설정할 수 있습니까? 각 문서를 json으로 읽은 다음 json을 CMS로 보냅니다. 이것은 가능한가? JSON 단지 문자열이기 때문에스프링 배치 MongoItemReader가 json으로 읽습니다.

답변

1

, 당신은 당신의 MongoItemReader에 대한 String 유형을 구성하고 일부 사용자 지정 간단한 컨버터 MongoTemplate를 제공해야

public class DBObjectToStringConverter implements Converter<DBObject, String> { 
    public String convert(DBObject source) { 
    return source == null ? null : source.toString(); 
    } 
} 

이것은 단지 DBObject의 String JSON 표현을 반환합니다.

그런 구성 :

<mongo:db-factory/> 

<mongo:mapping-converter id="mappingConverter"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="com.my.batch.mongo.DBObjectToStringConverter "/> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
    <constructor-arg ref="mongoDbFactory"/> 
    <constructor-arg ref="mappingConverter"/> 
</bean> 

<bean class="org.springframework.batch.item.data.MongoItemReader"> 
    <property name="template" ref="mongoTemplate"/> 
    <property name="query" value="..."/> 
    <property name="targetType" value="java.lang.String"/> 
</bean> 

그리고 짜잔! 각 item은 JSON 문자열을 반환합니다.

+0

어디에서 읽을 모음을 지정합니까? – user2011509

+0

죄송합니다, 귀하의 질문에 지금 당황하지 않습니다. 원시 JSON을 처리하도록 구성하는 방법을 방금 대답했습니다. 마이클 (Michael)과 비슷한 반응을 얻으려면 비슷한 질문 (http://stackoverflow.com/questions/30117576/spring-batch-mongoitemreader-how-to-pass-jobparameters-to-mongo-query)을보십시오. 귀하의 측면에서 DDoS 공격 ... –

+0

@Artem - http://stackoverflow.com/questions/41530697/org-springframework-dao-dataaccessresourcefailureexception-unable-to-write-to-f에서 안내 할 수 있습니까? –