Вот мой конфиг Java (Spring 3.2.4, верблюд 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
В чем моя ошибка и как ее решить?