2017-04-01 61 views
1

我最近開始學習camel,並試用了一些示例應用程序。 org.apache.camel.FailedToCreateRouteException: 無法在創建路由路徑2:>>> 豆我也遇到了這個錯誤,而作爲測試用例運行的一部分裝載應用程序上下文,BeanCreationException:已聲明但不在註冊表中存在的組件

... 45多所致[ref:orderItemMessageTranslator method:transformOrderItemMessage] < < < in route:Route(route2)[[from [sql:select id from orders。「order」 where ... because of No bean could be found in the registry for: orderItemMessageTranslator在 org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:910) at 個org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:175) 在 org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:780) 在 org.apache.camel.impl .DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2068) 在 org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1816) 在 org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java :1683) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1651) 在 org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:254) 在 org.apache.camel.spring.SpringCamelContext.afterPropertiesSet(SpringCamelContext.java:106) 在 org.springframework.beans .factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ... 60由多個所致:org.apache .camel.NoSuchBeanException:在註冊表中找不到豆 :orderItemMessageTranslator org.apache.camel.component.bean.RegistryBean.ge tBean(RegistryBean.java:87) 在 org.apache.camel.model.BeanDefinition.createProcessor(BeanDefinition.java:222) 在 org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:499) 在 org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:212) 在 org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:907) ...... 71多個

通過Google搜索嘗試了我最好的,並在堆棧溢出來解決,但我的努力沒有成功。需要一些幫助。

這是我folder structure

下面是w.r.t用於我的示例應用程序供你參考一些相關文件,

Application.java: 
--------------------- 
@Configuration 
@ComponentScan(basePackages = "com.pluralsight.orderfulfillment") 
@PropertySource("classpath:order-fulfillment.properties") 
public class Application { 

} 

IntegrationConfig.java: 
------------------------- 
@Configuration 
public class IntegrationConfig extends CamelConfiguration { 

    @Inject 
    private Environment environment; 

    @Inject 
    private DataSource datasource; 

    @Bean 
    public SqlComponent sql() { 
     SqlComponent sqlComponent = new SqlComponent(); 
     sqlComponent.setDataSource(datasource); 
     return sqlComponent; 
    } 

    @Bean 
    public RouteBuilder newWebsiteOrderRoute() { 
     return new RouteBuilder() { 
      @Override 
      public void configure() throws Exception { 
       from("sql:" 
        + "select id from orders.\"order\" where status = '" 
        + OrderStatus.NEW.getCode() 
        + "'" 
        + "?" 
        + "consumer.onConsume=update orders.\"order\" set status = '" 
        + OrderStatus.PROCESSING.getCode() 
        + "' where id=:#id") 
       .beanRef("orderItemMessageTranslator", "transformOrderItemMessage") 
       .to("log:com.pluralsight.orderfulfillment.order?level=INFO"); 

      } 

     }; 
    } 
} 

Pom.xml: 
--------- 
.. 
.. 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-spring</artifactId> 
      <version>2.13.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-spring-javaconfig</artifactId> 
      <version>2.13.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-sql</artifactId> 
      <version>2.13.2</version> 
     </dependency>  
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-test-spring</artifactId> 
      <version>2.13.2</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 

     <!-- SPRING FRAMEWORK --> 

     <!-- Spring framework core dependency minus commons logging in favor of SLF4J --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.0.4.RELEASE</version> 
      <exclusions> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <!-- Spring aspects --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 

     <!-- Spring MVC --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 

     <!-- Spring MVC --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 

     <!-- Spring JDBC --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>4.0.4.RELEASE</version> 
     </dependency> 

     <!-- Spring Data JPA --> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.5.2.RELEASE</version> 
      <exclusions> 
       <exclusion> 
        <artifactId>spring-aop</artifactId> 
        <groupId>org.springframework</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency>  
.. 
.. 

預先感謝幫助。

回答

0

你有裝飾OrderItemMessageTranslator@Component註解?

相反的.beanRef(..),嘗試從Java DSL的.bean(..)構建器方法(http://camel.apache.org/bean.html#Bean-JavaDSLbeansyntax):

.bean(new OrderItemMessageTranslator(), "transformOrderItemMessage") 

UPDATE:

如果你想使用.beanRef(..)方法,然後嘗試添加@ComponentScan(..)到其延伸的CamelConfigurationIntegrationConfig

像這樣:http://camel.apache.org/spring-java-config.html#SpringJavaConfig-Configuration

+0

是,@Component註釋是there..bean()建設者的工作,它解決了我的問題。只是想知道爲什麼beanRef()是不是在我的情況下工作.. – user3248235

+0

嘗試@ ComponentScan'加上'到CamelConfiguration類(你可以在我的更新答案見)。 – mgyongyosi