java - 骆驼组件看不到数据源
问题描述
这是我的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
我的错误是什么,如何解决?
解决方案
推荐阅读
- php - 如何将上次修改日期添加到我的 WooCommerce 产品
- sql - 为缺少的聚合创建空/默认行的最佳方法是什么
- java - 如何将密码添加到 base 64 pdf?
- sql-server - 我可以通过 SQL Server Management 和 SQL Profiler 连接到我的 SQL Server 实例,但我的 VS 应用程序无法连接
- mysql - 如何将 .so 文件发送到 Google Cloud 上的 MySQL 实例?
- php - 使用 Doctrine-Fixture 加载数据时,requestStack getCurrentRequest 在服务中为空
- python - Python Dash 应用程序调用 API 时出现 Heroku 409 错误
- c# - FATAL:所有操作都需要 OperationId。请添加它以进行路径的“获取”操作
- linux - 我如何称呼在 Linux 终端中表示新命令行的东西,我可以自定义它吗?
- javascript - Javascript:使用一个键对对象数组进行完全外连接