配置 Spring 以使用多个数据源

Configuring Spring to useMultiple Data Sources

我正在尝试在我的 spring boot 应用程序中连接 2 个不同的 schemas

为此,我有 2 个不同的 data sources。我应该如何在我的属性文件中配置它?

我看到了 这让我知道了如何去做。我的应用程序中目前有以下 3 属性 个文件:

1. application.properties
2. hibernate.properties
3. multiple-db.properties

application.properties 当前为空。以下是其他 2 个文件:

hibernate.properties:

# Connection configuration
hibernate.connection.username= my_uname1
hibernate.connection.password= my_pword1

多个-db.properties:

# Schema 1-Data source configuration
oracle.db.username1= my_uname1
oracle.db.password1= my_pword1
oracle.db.url1= my_url1

# Schema 2-Data source configuration
oracle.db.username2= my_uname2
oracle.db.password1= my_pword2
oracle.db.url2= my_url2

# JPA configuration
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect

# Hibernate configuration
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.connection.url=my_url

hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider

这是正确的做法吗?我需要 3 个 properties files,还是我可以一次完成所有这些?

使用 Spring,您可以轻松做到这一点。

会是这样的:

<bean id="dataSource_1"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/northwind" />
    <property name="username" value="root" />
    <property name="password" value="" />
</bean>

<bean id="dataSource_2"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/northwind_dup" />
    <property name="username" value="root" />
    <property name="password" value="" />
</bean>

您也可以使用您的属性文件并执行如下操作:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<context:property-placeholder location="jdbc.properties"/>

您可以只使用一个文件,也可以使用三个。这真的取决于你。

Spring 文档建议了一种创建主要和次要数据源的方法: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-two-datasources

每个数据源都可以按照此处所述进行配置: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-a-datasource

您可以使用 @Autowire 从其他 bean 访问它们。您可以为每个数据源关联一个前缀,以便您可以在 application.propertiesapplication.yml 文件中对其进行配置。

您也可以将一个设为主要。