如何使用spring(xml配置)使用2个或更多数据库

时间:2016-06-01 07:54:09

标签: java spring-data

我在春天刚开始尝试在两个不同的数据库之间切换。我在spring配置xml文件中进行了这些更改:

<bean id="placeholderConfig"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:config/db-config.properties" />
    </bean>

    <!-- MS Sql DB -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver}" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
    </bean>
    <!-- end -->

    <!-- MySql DB -->
    <bean id="dataSourceMySql"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver1}" />
        <property name="url" value="${db.url1}" />
        <property name="username" value="${db.username1}" />
        <property name="password" value="${db.password1}" />
    </bean>
    <!-- end -->

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="com.epam.model" />
        <property name="dataSource" ref="dataSource" />

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto"></prop>
                <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect</prop>
            </props>
        </property>

        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
        </property>

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>



    <bean id="entityManagerFactoryMySql"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="com.epam.model" />
        <property name="dataSource" ref="dataSourceMySql" />

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto"></prop>
                <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</prop>
            </props>
        </property>

        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
        </property>

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>



    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean id="transactionManagerMySql" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryMySql" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
    <tx:annotation-driven transaction-manager="transactionManagerMySql" />

    <jpa:repositories base-package="com.epam.repository" />

</beans>

我需要在存储库或服务中添加什么来指定我想要工作的数据库。

2 个答案:

答案 0 :(得分:0)

您可以使用@Resource注释

加载第二个数据源

答案 1 :(得分:0)

感谢您的回应。我刚刚在属性文件中添加了第二个特定于数据库的键/值,具体取决于数据库类型,只是未注释的适当键。