如何创建application.properties中提到的具有多个数据源配置的单个配置java文件,以便在添加任何'n'个数据源的同时。它必须使用相同的配置文件自动处理所有数据源。
此外,所有数据源必须使用相同的JPARepository来查询数据。另外,我想创建一个实体管理器列表,以对特定的数据源执行特定的操作。
application.properties
site1.url=jdbc:postgresql://localhost:4567/postgres
site1.username=someUsername
site1.password=somePassword
site2.url=jdbc:postgresql://localhost:5433/postgres
site2.username=someUsername
site2.password=somePassword
SiteConfiguration.java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "site1EntityManager",
transactionManagerRef = "site1TransactionManager",
basePackages = "com.someProject.repositoryInterface"
)
public class Site1Config extends HikariConfig {
@Autowired
private Environment environment;
@Primary
@Bean(name = "site1EntityManager")
public HikariDataSource mysqlDataSource() {
setJdbcUrl(environment.getProperty("site1.url"));
setUsername(environment.getProperty("site1.username"));
setPassword(environment.getProperty("site1.password"));
return new HikariDataSource(this);
}
@Primary
@Bean(name = "site1EntityManager")
public LocalContainerEntityManagerFactoryBean mysqlEntityManagerFactory(EntityManagerFactoryBuilder builder) {
return builder
.dataSource(mysqlDataSource())
.packages(ModelClass.class)
.persistenceUnit("site1PU")
.build();
}
@Primary
@Bean(name = "site1TransactionManager")
public PlatformTransactionManager mysqlTransactionManager(@Qualifier("site1EntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
这是单个数据源配置文件的基本示例。我想使SiteConfiguration成为“ site(Number)”形式的通用类,并为每个案例创建一个单独的数据源,实体管理器。
自动应该从application.properites中获取数据源的数量,并且应该配置属性文件中提到的所有数据源。
此外,每个数据源都必须使用相同的JPARepository。
我不知道您是否已经完成,但是您可能会再次通过此链接,