我还没有找到关于这个主题的问题,所以我会问。我从来没有真正解决过使用多个数据源的问题。一个例子是 ETL这需要两个数据源。如何设计这样的应用程序?
最佳答案
两个数据源,两个不同的名称。通过各自的 bean ID 注入(inject)每个。
<bean id="fromDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${from.jdbc.driverClassName}"/>
<property name="url" value="${from.jdbc.url}"/>
<property name="username" value="${from.jdbc.username}"/>
<property name="password" value="${from.jdbc.password}"/>
</bean>
<context:property-placeholder location="from.jdbc.properties"/>
<bean id="toDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${to.jdbc.driverClassName}"/>
<property name="url" value="${to.jdbc.url}"/>
<property name="username" value="${to.jdbc.username}"/>
<property name="password" value="${to.jdbc.password}"/>
</bean>
<context:property-placeholder location="to.jdbc.properties"/>
您希望拥有一个 DAO,但它有两个实例 - 每个实例都有自己的数据源。一个将从源中选择,另一个将插入到目标中。
更好的方法可能是放弃 Spring,而只使用数据库中内置的批量传输机制。
关于java - 拥有多个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7134299/