在我的应用程序中,我正在尝试配置两个数据库。配置完成后,我的应用程序部署并成功运行第一个数据库,但是当我试图访问第二个数据库时,我得到“”这个例外。任何人都可以帮助我...提前致谢。
我的Configuration.xml文件
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:database.properties"></property>
<bean id="dataSource" class="com.iii.orn11j.common.dao.OrionDataSource"
destroy-method="close" >
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${database.url}"></property>
<property name="username" value="${database.username}"></property>
<property name="password" value="${database.password}"></property>
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="60" />
<property name="logAbandoned" value="false" />
<property name="initialSize" value="2" />
<property name="maxWait" value="30000" />
<property name="maxActive" value="30" />
<property name="minIdle" value="5" />
<property name="maxIdle" value="15" />
<!-- <property name="validationQuery" value="select 1 from dual" />
<property name="testOnBorrow" value="true" />
<property name="testWhileIdle" value="true" /> -->
</bean>
<bean id="dataSource2" class="com.iii.orn11j.common.dao.OrionDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${database.url2}"></property>
<property name="username" value="${database.username2}"></property>
<property name="password" value="${database.password2}"></property>
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="60" />
<property name="logAbandoned" value="false" />
<property name="initialSize" value="2" />
<property name="maxWait" value="30000" />
<property name="maxActive" value="30" />
<property name="minIdle" value="5" />
<property name="maxIdle" value="15" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
我的查询方法是:
@Autowired
OrionDataSource dataSource2;
@Override
public void testCon()throws Exception{
JdbcTemplate temp=new JdbcTemplate(dataSource2);
String qry="SELECT COUNT(*) FROM OM_ITEM";
Integer count=(Integer)temp.queryForObject(qry, Integer.class);
System.out.println("Connected 2nd DB -----> "+count);
}
答案 0 :(得分:1)
首先,您需要使用两个dataSource实现jdbcTemplate
并使用这两个jdbcTemplate
。如果您想直接自动装配数据源,则必须使用autowire
和qualifier
的组合,或者只使用一个名为resource
的注释:
@Resource(name = "dataSource")
private OrionDataSource dataSource;
@Resource(name = "dataSource2")
private OrionDataSource dataSource2;
如果您尝试使用两个数据源,则需要注入两个不同的jdbcTemplate。
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="jdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource2"></property>
</bean>
如果你的查询类可以注入jdbcTemplate。
@Resource(name = "jdbcTemplate1")
private JdbcTemplate jdbcTemplate1;
@Resource(name = "jdbcTemplate2")
private JdbcTemplate jdbcTemplate2;
public void testCon()throws Exception{
String qry="SELECT COUNT(*) FROM OM_ITEM";
Integer count=(Integer)jdbcTemplate1.queryForObject(qry, Integer.class);
System.out.println("Connected 2nd DB -----> "+count);
}
答案 1 :(得分:0)
您需要使用@Qualifier
和@Autowired
来注入特定的bean:
@Autowired
@Qualifier("dataSource")
OrionDataSource dataSource;
@Autowired
@Qualifier("dataSource2")
OrionDataSource dataSource2;