Apache camel Camel-CSV到Java对象的转换
我有一个包含一组用户的大型CSV文件。我正在寻找一种读取文件、映射到Java对象并将该对象传递给处理器的简单方法,处理器将对该对象执行一些操作。 因此,我用表示CSV文件的注释标记了一个Java bean:Apache camel Camel-CSV到Java对象的转换,apache-camel,Apache Camel,我有一个包含一组用户的大型CSV文件。我正在寻找一种读取文件、映射到Java对象并将该对象传递给处理器的简单方法,处理器将对该对象执行一些操作。 因此,我用表示CSV文件的注释标记了一个Java bean: @CsvRecord(separator = ",") public class User { @DataField(pos = 1) private String username; @DataField(pos = 2) private String gr
@CsvRecord(separator = ",")
public class User {
@DataField(pos = 1)
private String username;
@DataField(pos = 2)
private String group;
}
然后,我开始编写驼峰路由代码,但是我无法找到如何将CSV作为Java对象传递给端点:
CamelContext context = new DefaultCamelContext();
final DataFormat bindy = new BindyCsvDataFormat("com.sample.model");
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:/usr/camel/in?noop=true").
unmarshal(bindy)
.to("??????");
}
});
目标端点应该是接收用户对象的java类。有可能做到吗?谢谢您可以使用
处理器的实例
来处理POJO:
Processor myProcessor = new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
// do something here
}
};
from("file:/usr/camel/in?noop=true")
.unmarshal(bindy)
.process(myProcessor);
解决方案2:您可以使用bean。首先,添加这个“bean”类:
如果希望对bean使用不同的参数,可以使用带有simple
表达式的方法调用,如下所示:
.bean(new MyBean(), "process(${body.get(0).etc...})")
谢谢,我已经实现了一个简单的处理器,但是为了检索对象,我必须深入到主体中,然后深入到数据的ArrayList中,而ArrayList又包含HashMaps。有没有更简单的方法从处理器检索POJO<代码>公共类SimpleProcessor实现处理器{public void process(Exchange Exchange)抛出异常{ArrayList list=(ArrayList)Exchange.getIn().getBody();for(HashMap-map:list){Iterator-iter=map.entrySet().Iterator();而(iter.hasNext()){System.out.println(“用户”+iter.next();}}不用担心,祝骆驼好运,一旦你使用它一段时间,它就是一个很棒的框架:)
from("file:/usr/camel/in?noop=true")
.unmarshal(bindy)
.bean(new MyBean())
.bean(new MyBean(), "process(${body.get(0).etc...})")