Csv Camel Bindy:可配置";pos";@DataField中的属性

Csv Camel Bindy:可配置";pos";@DataField中的属性,csv,apache-camel,bindy,Csv,Apache Camel,Bindy,我正在配置我的POJO来解组一个CSV行,所以我声明了我的属性,如camel bindy官方页面所示,解组时一切都进行得很顺利 @DataField(pos = 1) private String name; ... getter and setter 我需要做的是使pos属性可配置,指向properties.file中的相应属性,以指示CSV行中name列的位置 是否有可能实施这种行为 我想知道是否可以使用Bindy,但文档中似乎没有任何说明 当您不确定属性位置时,可以使用驼峰CSV

我正在配置我的POJO来解组一个CSV行,所以我声明了我的属性,如camel bindy官方页面所示,解组时一切都进行得很顺利

@DataField(pos = 1) 
private String name; 
... 
getter and setter 
我需要做的是使
pos
属性可配置,指向properties.file中的相应属性,以指示CSV行中
name
列的位置


是否有可能实施这种行为

我想知道是否可以使用Bindy,但文档中似乎没有任何说明

当您不确定属性位置时,可以使用驼峰CSV数据解组

您可以创建一个路由,检查给定文件夹中的csv文件,将每个csv行解组到
列表
,然后将该
列表
发送到您的bean,该bean将进行处理。 假设csv文件的第一行是列,那么在bean中,您将知道每个属性的位置,并且能够将csv数据字符串映射到bean的属性

路由进程文件和解组行:

<route>
    <from uri="file:///path/where/are/my/csvfiles?delete=true />
    <unmarshal><csv /></unmarshal>
    <to uri="bean:myCsvMapper?method=doHandleCsvData" />


不,这是不可能的。未来也没有计划支持这一点

您可以查看一些其他CSV组件,例如beanio,它允许在外部配置文件中定义绑定信息


感谢弗雷德的回复。由于bindy不支持这种功能,所以可以像您提到的那样手动处理CSV数据。感谢Claus的回复。beanIO可以是一种替代方案,或者我们可以在一个决策处理器中处理CSV数据。
public void doHandleCsvData(List<List<String>> csvData){
   // with first line (column names) get the position of your attributes

   // for next lines do the mapping between the position and the attributes 
   // of your data bean
}