Я настроил две базы данных Postgres с пружинной загрузкой, но Spring всегда показывает первичную базу данных и игнорирует вторичную, любая помощь приветствуется.
ниже - моя конфигурация
application.properties
#datasource 1
spring.datasource.url= jdbc:postgresql://localhost:5432/db1
spring.datasource.username=user1
spring.datasource.password=user1
#data source 2
spring.datasource2.url= jdbc:postgresql://localhost:5432/db2
spring.datasource2.username=user2
spring.datasource2.password=user2
Ниже приведена конфигурация для источника данных 1 У меня есть несколько хранилищ и сущностей в источнике данных 1, и это мой основной источник данных.
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "primaryEntityManager",
transactionManagerRef = "primaryTransactionManager",
basePackages = {"pkg.user_service.repository","pkg.master.repository","pkg.Wallet.repository","pkg.security.repositories",
"pkg.product_service.repository","pkg.OMS.repository","pkg.LMS.repository","pkg.payment.repository"}
)
public class DataSource1_config {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public HikariDataSource dataSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder().type(HikariDataSource.class)
.build();
}
@Primary
@Bean(name = "primaryEntityManager")
public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(dataSource(null))
.packages("pkg")
.persistenceUnit("primaryPU")
.build();
}
@Primary
@Bean(name = "primaryTransactionManager")
public PlatformTransactionManager primaryTransactionManager(@Qualifier("primaryEntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Ниже приведена конфигурация для источника данных2, в источнике данных 2 есть один репозиторий и сущность.
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "secondEntityManager",
transactionManagerRef = "secondTransactionManager",
basePackages = {"device_info.repository"}
)
public class DataSource2_config {
@Bean
@ConfigurationProperties(prefix = "spring.datasource2")
public HikariDataSource secondSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder().type(HikariDataSource.class)
.build();
}
@Bean(name = "secondEntityManager")
public LocalContainerEntityManagerFactoryBean secondEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(secondSource(null))
.packages(User_Device_Info.class)
.persistenceUnit("secondPU")
.build();
}
@Bean(name = "secondTransactionManager")
public PlatformTransactionManager secondTransactionManager(@Qualifier("secondEntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}