java - Camel 路线未在 xml 文件中解析

标签 java apache-camel java-11 spring5

我正在从 Java 8 升级到 Java 11。 即使之前使用的 Spring 版本是 4.x,现在我已经升级到 Spring 5.x

我使用 Camel 作为路线

我的 Camel 上下文文件如下

 <bean id="samplePriceBean"
    class="com.abc.SamplePriceBean">
    <constructor-arg index="0"
        ref="route1" />
        <constructor-arg index="1"
        ref="route2" />
    <constructor-arg index="2"
        ref="myCamelContext" />
    <constructor-arg index="3" value="route1" />
    <constructor-arg index="4" value="route1" />
</bean>
<camelContext id="myCamelContext" xmlns="http://camel.apache.org/schema/spring">
    <route id="listRoute" autoStartup="false">
        <from
            uri="file:{{abc.list}}?noop=true&amp;" />
        <to uri="direct:route1"
            id="route1" />
    </route>
    <route id="readRoute" autoStartup="false">
        <from
            uri="file:{{abc.read}}?noop=true&amp;" />
        <to uri="direct:route2"
            id="route2" />
    </route>
</camelContext>

现在,当我在控制台中运行应用程序时,出现如下错误

Error creating bean with name 'samplePriceBean' defined in class path resource [app-camel.xml]: Cannot resolve reference to bean 'route1' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'route1' available
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:787)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:226)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

应用程序无法解析 Camel 上下文中定义的路由

我使用的是 JDK 11、SPring 5.x、Apache Camel 3.0.0

最佳答案

好吧,这从一开始就是错误的

<route>用于定义路由,路由不会暴露为 spring bean,spring 依赖注入(inject)可以使用/查找。仅<camelContext>就是为此目的,因为它的 CamelContext

在您的 SamplePriceBean 中您可以更改其构造函数以不将route1和route2作为引用,但您可以仅使用CamelContext中的API通过 CamelContext 查找这些路线API(不是 spring bean id)。

关于java - Camel 路线未在 xml 文件中解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320589/

相关文章:

java - 发布失败,出现多个错误 eclipse

java - JPA、@Transient 字段和 native 查询映射

java - 执行过程中如何查看sikuli日志?

postgresql - 如何使用 Apache Camel 接收 PostgreSQL LISTEN/NOTIFY?

jms - 在 Camel 中是否可以为发送到 ActiveMQ 的每条消息设置不同的请求超时?

java - Java 11 上 ShellFolder.getShellFolder() 的替换或使用方式

java - 在 module-info 中导入 swing 包

java - Hibernate 4 - 服务和注入(inject)构造函数值

java - ServiceMIX异常处理

java - 分配大于堆的数组时出现意外的 OutOfMemoryError