Настройка нескольких баз данных в SPRING BOOT

Я пытаюсь подключить 2 разные базы данных для моего весеннего загрузочного приложения, и возникает эта ошибка:


ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО


Описание:

Параметр 0 метода entityManagerFactory в com.SyncFibertToolSpring.SyncFibertTool.MydbDB.Config.MydbDbConfig требует bean-компонента типа «org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder», который не может быть найден.

Действие:

Рассмотрите возможность определения bean-компонента типа org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder в вашей конфигурации.

Ниже вы найдете мои 2 класса конфигураций для баз данных.


package com.SyncFibertToolSpring.SyncFibertTool.MydbDB.Config;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;


@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "mydbEntityManagerFactory",
    basePackages = {"com.SyncFibertToolSpring.SyncFibertTool.MydbDB.DAO"})
public class MydbDbConfig {


  @Primary
  @Bean(name = "mydbDataSource")
  @ConfigurationProperties(prefix = "spring.mydb.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

  @Primary
  @Bean(name = "mydbEntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean entityManagerFactory(
      EntityManagerFactoryBuilder builder, @Qualifier("mydbDataSource") DataSource dataSource) {
    return builder.dataSource(dataSource)
        .packages("com.SyncFibertToolSpring.SyncFibertTool.MydbDB.entities").

        build();
  }

  @Primary
  @Bean(name = "mydbTransactionManager")
  public PlatformTransactionManager transactionManager(
      @Qualifier("mydbEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
  }

}
package com.SyncFibertToolSpring.SyncFibertTool.fibertoolSyncDB.Config;

import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "fibertoolSyncEntityManagerFactory",
    basePackages = {"com.SyncFibertToolSpring.SyncFibertTool.fibertoolSyncDB.DAO"})
public class FibertToolDbConfig {

  @Primary
  @Bean(name = "fibertoolSyncDataSource")
  @ConfigurationProperties(prefix = "spring.fibertoolsync.datasource")
  public DataSource dataSource() {
    return DataSourceBuilder.create().build();
  }

  @Primary
  @Bean(name = "fibertoolSyncEntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean entityManagerFactory(
      EntityManagerFactoryBuilder builder,
      @Qualifier("fibertoolSyncDataSource") DataSource dataSource) {
    return builder.dataSource(dataSource)
        .packages("com.SyncFibertToolSpring.SyncFibertTool.fibertoolSyncDB.entities").

        build();
  }

  @Primary
  @Bean(name = "fibertoolSyncTransactionManager")
  public PlatformTransactionManager transactionManager(
      @Qualifier("fibertoolSyncEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
  }


}
2
0
1 696
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первая ошибка здесь заключается в том, что вы определили два @Primary источника данных. Удалите аннотацию @Primary из одного из двух классов @Configuration и просто оставьте ее одному классу.

Другие вопросы по теме