需要使用SpringBoot将Camel和MyBatis与应用程序集成。 SpringBoot为Camel和MyBatis提供开箱即用的支持。还提供Camel和MyBatis SpringBoot启动器。
但是,当我尝试将Spring Boot应用程序与Camel和MyBatis集成时,它会失败。
我正在使用基于Java DSL的Camel Route。还使用Mybatis Spring启动依赖项。注释映射器,在application.properties文件中添加了数据库属性。我期待发生的事情: 1)SpringBoot设置数据源和映射器,sqlsessionfactory启动时。 2)接下来调用Camel-MyBatis使用者,在(1)中完成的设置将允许,Camel使用mybatis成功进行数据库调用。
我创建了spring注释配置类,并使用它来创建/获取DataSource bean。
如何让Camel使用这个dataSource bean? 如何告诉Camel使用新建的SQL会话工厂,而不是尝试从配置文件构建?
在github中创建示例应用程序,使用内存中的db(h2)
sample-app
获取NPE 消费者[mybatis:// getClaimInfo?statementType = SelectOne]轮询端点失败:端点[mybatis:// getClaimInfo?statementType = SelectOne]。将在下次投票时再试一次。引起:[org.apache.ibatis.exceptions.PersistenceException -
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.4.0.jar:3.4.0]
at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:100)〜[mybatis-3.4.0.jar:3.4.0] 在org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:47)〜[mybatis-3.4.0.jar:3.4.0]
答案 0 :(得分:3)
我已经能够成功使用Spring Boot 1.3.6,Apache Camel 2.17.2和Mybatis-Spring-Boot-Starter 1.1.1:
maven中的关键依赖关系:
@Bean(name="mybatis")
public MyBatisComponent myBatisComponent( SqlSessionFactory sqlSessionFactory )
{
MyBatisComponent result = new MyBatisComponent();
result.setSqlSessionFactory( sqlSessionFactory );
return result;
}
要声明的密钥bean
a = [(1,f,e),(7,r,None),(2,s,f),(32,None,q)]
b = [(32,dd), (1,pp)]