首页 > 解决方案 > 骆驼组件看不到数据源

问题描述

这是我的java配置(Spring 3.2.4,camel 2.13.4),它创建了camelContext和dataSource

@Configuration
 @ComponentScan(basePackages = "some.package.here")
 public class BeansConfig {
 @Bean
 public DataSource dataSource(){
    DataSource dataSource = new DriverManagerDataSource();
    ((DriverManagerDataSource)dataSource).setDriverClassName(driver);
    ((DriverManagerDataSource)dataSource).setUrl(url);
    ((DriverManagerDataSource)dataSource).setUsername(username);
    ((DriverManagerDataSource)dataSource).setPassword(password);
     return dataSource;
}
 @Bean
 public CamelContext camelContext() throws Exception {
    CamelContext camelContext = new DefaultCamelContext();
    return camelContext;
}
}

我有junit4测试课

    @RunWith(CamelSpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = BeansConfig.class,loader = CamelSpringDelegatingTestContextLoader.class)
    public class CamelTestSpring {
      @Autowired
      private CamelContext camelContext;
      @Autowired
      private DataSource dataSource;


      @Before
      public void setUpContext() throws Exception {
        camelContext.getProperties().put(Exchange.LOG_DEBUG_BODY_MAX_CHARS, "1500");
        camelContext.addRoutes(routeBuilder());
        producerTemplate = camelContext.createProducerTemplate();
        Endpoint endpoint = camelContext.getEndpoint("direct:inSql");
        producerTemplate.setDefaultEndpoint(endpoint);
        camelContext.start();
       }
       @After
       public void cleanUpContext() throws Exception {
         camelContext.stop();
       }

    public RouteBuilder routeBuilder() throws Exception {
     return new RouteBuilder() {
      @Override
      public void configure() throws Exception {
        from("direct:inSql").to("sql:select * from dual");
      }
     };
    }

    @Test
    public void testDatasourse() {
    producerTemplate.sendBody("test");
  }
}

我的问题是当我运行路由时,camelContext 看不到 dataSource,尽管 dataSource 存在并正确注入。我尝试了路线from("direct:inSql").to("sql:select * from dual?dataSource=#dataSource");,但这无济于事。

Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: dataSource of type: javax.sql.DataSource

我的错误是什么,如何解决?

标签: javaspringapache-camelspring-jdbc

解决方案


推荐阅读