我正在尝试在我的应用程序中配置2个不同的数据源,因为它是必需的。
我在AppContext.xml中的配置如下:
<bean id="dataSourceA" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="datasourceAURL"/>
<property name="username" value="aaaa"/>
<property name="password" value="pppp"/>
</bean>
<bean id="dataSourceB" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver"/>
<property name="url" value="datasourceBURL"/>
<property name="username" value="bbbb"/>
<property name="password" value="cccc"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com/ex/myBatis/mappings" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSourceA" />
<property name="typeAliasesPackage" value="com.ex.myBatis.entities"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="configDataSource" />
<property name="typeAliasesPackage" value="com.ex.myBatis.entities"/>
</bean>
<bean id="sqlSession1" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory1" />
</bean>
<bean id="callService" class="com.ex.myBatis.Service.callService">
<property name="sqlSession" ref="sqlSession1" />
</bean>
但是在访问bean时我得到了以下异常
org.springframework.beans.factory.BeanCreationException:错误 创建名为&#39; callService&#39;:注入自动装配的bean 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire方法:public final void org.mybatis.spring.support.SqlSessionDaoSupport.setSqlSessionTemplate(org.mybatis.spring.SqlSessionTemplate); 嵌套异常是 org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有 [org.mybatis.spring.SqlSessionTemplate]类型的限定bean是 已定义:预期单个匹配bean但找到2: SQLSESSION,sqlSession1
请有人帮我弄清问题。 如果还有其他方法可以配置2个数据源,请建议我。
答案 0 :(得分:1)
您的配置大多正确。您遇到的问题是您使用自动装配注入callService
个依赖项之一。
似乎您使用SqlSessionDaoSupport
并且其sqlSessionTemplate字段是自动装配的。定义了两个模板,因此spring无法自动连接依赖项。您需要手动指定正确的模板。