His*_*oka 2 spring hibernate spring-data spring-data-jpa spring-boot
我正在尝试为我的 Spring Boot 应用程序连接 2 个不同的数据库,但出现此错误:
应用程序无法启动
描述:
com.SyncFibertToolSpring.SyncFibertTool.MydbDB.Config.MydbDbConfig 中的方法entityManagerFactory 的参数 0 需要类型为“org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder”的 bean,但无法找到。
行动:
考虑在配置中定义“org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder”类型的 bean。
下面您将找到我的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3575 次 |
| 最近记录: |