76.7. 파이프를 구분 기호로 마샬링
다음 본문을 고려하십시오.
Map<String, Object> body = new LinkedHashMap<>();
body.put("foo", "abc");
body.put("bar", 123);이 Java 경로 정의
// Camel version < 2.15
CsvDataFormat oldCSV = new CsvDataFormat();
oldCSV.setDelimiter("|");
from("direct:start")
.marshal(oldCSV)
.to("mock:result")
// Camel version >= 2.15
from("direct:start")
.marshal(new CsvDataFormat().setDelimiter('|'))
.to("mock:result")또는 이 XML 경로 정의
<route>
<from uri="direct:start" />
<marshal>
<csv delimiter="|" />
</marshal>
<to uri="mock:result" />
</route>그런 다음 생산할 것입니다.
abc|123
XML 내에서 autogenColumns, configRef 및 strategyRef 속성 사용
Camel 2.9.2 / 2.10에서 사용할 수 있으며 Camel 2.15에서 삭제
CSV 데이터 형식을 사용자 지정하여 자체 CSVConfig 및/또는 CSVStrategy 를 사용할 수 있습니다. autogenColumns 옵션의 기본값은 true입니다. 다음 예제에서는 이 사용자 지정을 보여줍니다.
<route>
<from uri="direct:start" />
<marshal>
<!-- make use of a strategy other than the default one which is 'org.apache.commons.csv.CSVStrategy.DEFAULT_STRATEGY' -->
<csv autogenColumns="false" delimiter="|" configRef="csvConfig" strategyRef="excelStrategy" />
</marshal>
<convertBodyTo type="java.lang.String" />
<to uri="mock:result" />
</route>
<bean id="csvConfig" class="org.apache.commons.csv.writer.CSVConfig">
<property name="fields">
<list>
<bean class="org.apache.commons.csv.writer.CSVField">
<property name="name" value="orderId" />
</bean>
<bean class="org.apache.commons.csv.writer.CSVField">
<property name="name" value="amount" />
</bean>
</list>
</property>
</bean>
<bean id="excelStrategy" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField" value="org.apache.commons.csv.CSVStrategy.EXCEL_STRATEGY" />
</bean>