Camel Bindy:提供 class 在 spring.xml 中使用

Camel Bindy: providing the class to use in spring.xml

我确定我错过了一些非常明显的东西,但还没有解决。

我们使用 bindy 将 CSV 文件提取到 POJO 中。这一直很好用。我们已经获得了一些要加载的 CSV 文件。这是我发现问题的地方。如果您进行包扫描,Bindy 不允许多个 class 具有 @CsvRecord 注释的包存在于同一个包中。但这没关系,因为我们使用的是 camel 2.13.3,我可以看到 BindyCsvDataFormat 的构造函数允许我们传入 class。

我遇到的麻烦是,我们使用 spring.xml 来设置 camel。我似乎无法让 BindyCsvDataFormat 使用 class 构造函数。它只会使用进行包扫描的那个。

<bean id="bindyDataformat" class="org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat">
    <constructor-arg value="com.something.package.Model.class" />
</bean>

以上方法无效。我怀疑我将字符串作为 constructor-arg 传递,因此始终调用字符串构造函数。 有没有办法让 BindyCsvDataFormat 不进行包扫描并允许我提供 class 我希望将 csv 数据解组到 spring.xml

您尝试做的不是 bindy 特有的。这是一个常见问题,您需要通过 Spring DI.

注入 Class 的 "value"

这里有一个 link 描述了如何正确传递 class 参数:

pass "HardCoded" Constructor Arg Class<T> to bean via Spring Config