【发布时间】:2021-05-26 14:26:00
【问题描述】:
我在 Spring Boot 中有两个 MySQL 数据源,因此我有两个配置类。但看起来它只使用主数据源。所有实体都是为主数据源创建的,所以 crawlerdb 和 userdb 实体都是在 userdb 中创建的。
我的用户数据库主配置:
/**
* Data source for the MySQL User Database schema
*/
@Configuration
@EntityScan(basePackages = "cs.crawler.server.projectcs.domain.userdb")
@EnableJpaRepositories(basePackages = "cs.crawler.server.projectcs.repos.userdb")
@EnableTransactionManagement
public class UserDomainConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource.users")
public DataSourceProperties userDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource.users.configuration")
public HikariDataSource firstDataSource(DataSourceProperties firstDataSourceProperties) {
return firstDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
}
我的二级爬虫配置:
/**
* Data source for the MySQL crawler database schema
*/
@Configuration
@EntityScan(basePackages = "cs.crawler.server.projectcs.domain.crawlerdb")
@EnableJpaRepositories(basePackages = "cs.crawler.server.projectcs.repos.crawlerdb")
@EnableTransactionManagement
public class CrawlerDomainConfig {
@Bean
@ConfigurationProperties("spring.datasource.crawler")
public DataSourceProperties crawlerDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.datasource.crawler.configuration")
public HikariDataSource secondDataSource(DataSourceProperties secondDataSourceProperties) {
return secondDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
}
}
两个模式的实体类位于不同的包中,如类名上方的@EntityScan 所示。但是,当我检查 MySQL 工作台中创建的架构时,我发现所有实体都是在 userdb 中创建的。
【问题讨论】:
-
All entities are created for the primary datasource这是预期的行为。如果您希望您的服务使用不同的数据源,您必须明确地将它们自动装配到这些服务中。
标签: java mysql spring spring-boot