【问题标题】:Configuring Spring to useMultiple Data Sources配置 Spring 以使用多个数据源
【发布时间】:2016-07-20 03:50:12
【问题描述】:

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

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

我看到了this answer,这让我知道了如何去做。我的应用程序中目前有以下 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

multiple-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,还是我可以一次性完成所有这些?

【问题讨论】:

    标签: java spring hibernate datasource properties-file


    【解决方案1】:

    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

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

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

    【讨论】:

      【解决方案2】:

      使用 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"/>
      

      您只能使用一个或三个文件。这完全取决于您。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-14
        • 1970-01-01
        • 2018-04-12
        • 1970-01-01
        • 2018-06-14
        • 1970-01-01
        • 2021-03-16
        • 1970-01-01
        相关资源
        最近更新 更多