Spring Boot Sping Boot 自动配置不适用于Apache Camel Bindy

vzgqcmou  于 2023-08-04  发布在  Spring
关注(0)|答案(1)|浏览(113)

正如here和官方文档本身所描述的:unwrapSingleInstance属性允许我们在解组时建立 “,如果单个示例被解包并返回,而不是 Package 在java.util.List” 中。
但是,Sping Boot 的camel.dataformat.bindy-csv.unwrap-single-instance auto-configuration属性对文档示例没有影响:

BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

from("file://inbox")
  .unmarshal(bindy)
  .to("direct:handleOrders");

字符串
上面的示例仅通过直接在代码中以这种方式设置属性才能工作:

bindy.setUnwrapSingleInstance(false);


我猜这是因为new BindyCsvDataFormat对象不是由Spring管理的,所以我如何才能让Spring创建和管理它,以便在Apache Camel中自动配置?
我尝试在Spring中创建一个常规bean,并在unmarshal中设置引用,自动配置也没有效果:

@Bean
public DataFormat bindyCsvDataFormat() {
    return new BindyCsvDataFormat(com.acme.model.MyModel.class);
}

from("file://inbox")
  .unmarshal("bindyCsvDataFormat")
  .to("direct:handleOrders");


我在pom.xml和Apache Camel版本3.20.5中有这个依赖:

<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-bindy-starter</artifactId>
</dependency>

yzuktlbb

yzuktlbb1#

看看下面两个类:
https://github.com/apache/camel-spring-boot/tree/main/components-starter/camel-bindy-starter/src/main/java/org/apache/camel/dataformat/bindy/csv/springboot
正如您将看到的,Camel将“自动挂载”几个面向Bindy的类,以便在Spring( Boot )示例化bindy组件时自动连接它们。
在这种情况下,您当然不应该使用vanilla构造函数(例如new BindyCsvDataFormat)创建bean。

相关问题