Настройка Spring для использования нескольких источников данных

Я пытаюсь соединить 2 разных schemas в моем приложении spring boot.

Для этого у меня есть 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 или можно сделать все в одном?


person java123999    schedule 31.03.2016    source источник


Ответы (2)


Документация 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.properties или application.yml.

Вы также можете установить один из них в качестве основного.

person pastafarian    schedule 31.03.2016

С 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"/>

И вы могли бы использовать только один файл или три. Это действительно зависит от вас.

person Koenig711    schedule 31.03.2016