我没有找到关于这个主题的问题所以我会问。我从来没有真正解决过使用多个数据源的问题。一个例子是ETL,它需要两个数据源。如何设计这样的应用程序?
答案 0 :(得分:4)
两个数据源,两个不同的名称。通过各自的bean ID注入每个。
<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,但它有两个实例 - 每个都有自己的数据源。一个人会从源中选择SELECT,另一个会插入目标。
更好的方法可能是放弃Spring,只使用内置于数据库中的批量传输机制。