我正在配置我的 POJO 来解组 CSV 行,所以我声明了我的属性,如骆驼绑定官方页面上所示,解组时一切顺利。
@DataField(pos = 1)
private String name;
...
getter and setter
我需要做的是使pos
属性可配置,指向 properties.file 中的相应属性以指示name
列在 CSV 行中的位置。
是否有可能实现这种行为?
我正在配置我的 POJO 来解组 CSV 行,所以我声明了我的属性,如骆驼绑定官方页面上所示,解组时一切顺利。
@DataField(pos = 1)
private String name;
...
getter and setter
我需要做的是使pos
属性可配置,指向 properties.file 中的相应属性以指示name
列在 CSV 行中的位置。
是否有可能实现这种行为?
不,这是不可能的。并且没有计划在未来支持这一点。
您可以查看其他一些 CSV 组件,例如 beanio,它允许在外部配置文件中定义绑定信息。
我很想知道是否可以使用Bindy,但文档中似乎没有任何指示。
当您不确定属性位置的位置时,您可以做的是使用骆驼 CSV 数据解组。
http://camel.apache.org/csv.html
您创建一个检查给定文件夹中的 csv 文件的路由,将每个 csv 行解组到List<String>
并将其发送List<List <String>>
到您的将进行处理的 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" />
你的豆子:
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
}