Spring boot Spring数据JPA多数据源

Spring boot Spring数据JPA多数据源,spring-boot,spring-data-jpa,Spring Boot,Spring Data Jpa,我一直在遵循这个链接,试图配置两个或多个数据源 它解释了如何定义两个数据源,但没有解释在查询时如何实际使用它们 我已经创建了配置类并在application.prop文件中添加了prop。但如何在回购功能/服务功能中定义它们 控制器 应用程序属性 此外,我不想为不同的数据源设置单独的存储库 我有不同的读写数据库。因此,我的所有插入查询将在一台服务器上,而读取查询将在另一台服务器上。如果我为读写创建不同的repo/服务,那么会有太多冗余代码请查看详细信息。您将使用包配置两个不同的数据源、单独的存储

我一直在遵循这个链接,试图配置两个或多个数据源

它解释了如何定义两个数据源,但没有解释在查询时如何实际使用它们

我已经创建了配置类并在application.prop文件中添加了prop。但如何在回购功能/服务功能中定义它们

控制器

应用程序属性

此外,我不想为不同的数据源设置单独的存储库

我有不同的读写数据库。因此,我的所有插入查询将在一台服务器上,而读取查询将在另一台服务器上。如果我为读写创建不同的repo/服务,那么会有太多冗余代码

请查看详细信息。您将使用包配置两个不同的数据源、单独的存储库和模型,并为特定的包配置数据源。

查看详细信息。您将使用软件包配置两个不同的数据源、独立的存储库和模型,并为特定的软件包配置数据源。

显示查询代码?编辑问题以了解更多信息code@AnkitBansal,数据库是否相同,并且始终相同?例如,一个数据库是另一个数据库的读取副本?如果不是,不同的数据库结构会自动暗示它们不存储相同的精确数据。因此,两者都需要不同的实体,因此需要独立的存储库。是的,数据库是相似的副本,因此存储相同的数据,所以逻辑上我可以使用相同的实体&repo。这不能用JPA解决。有关MySQL特定的解决方案,请参阅,在该解决方案中,您可以保留一组实体和存储库。显示您的查询代码吗?编辑了以下问题:code@AnkitBansal,数据库是否相同,并且始终相同?例如,一个数据库是另一个数据库的读取副本?如果不是,不同的数据库结构会自动暗示它们不存储相同的精确数据。因此,两者都需要不同的实体,因此需要独立的存储库。是的,数据库是相似的副本,因此存储相同的数据,所以逻辑上我可以使用相同的实体&repo。这不能用JPA解决。有关MySQL特定的解决方案,请参阅,其中您可以保留一组实体和存储库。我必须使用相同的repo,即无法为diff DB创建diff repo。因此,您希望来自两个不同数据源的所有员工使用一个查询?我有用于读写的diff数据库。所以,虽然insert我将使用不同的数据库&用于读取查询,但我将使用第二个数据库,因为模块太多了。我不想为读写创建单独的回购/服务。太多多余的代码。@AnkitBansal,你能把这些细节添加到问题本身吗?这是一条非常重要的信息,读者可能不会阅读它,因为它现在位于对答案的评论中。我必须使用同一个repo,即无法为diff DB创建diff repo。因此,您希望来自两个不同数据源的所有员工使用一个查询?我有用于读写的diff数据库。所以,虽然insert我将使用不同的数据库&用于读取查询,但我将使用第二个数据库,因为模块太多了。我不想为读写创建单独的回购/服务。太多多余的代码。@AnkitBansal,你能把这些细节添加到问题本身吗?这是一条非常重要的信息,读者可能不会阅读它,因为现在它位于对答案的评论中。
public class EmpController {
  @RequestMapping("/abcd")
  public List<Employee> findAll() { return empService.findAll(); }
}
@Service
public class EmpService {
    @Autowired
    private EmpRepository empRepo;

    public List<Employee> findAll() { return empRepo.findAll(); }
}
public interface EmpRepository extends JpaRepository<Employee, Long> {}
@Configuration
public class DataSourceConfiguration {
  @Bean
  @Primary
  @ConfigurationProperties(prefix = "datasource.primary")
  public DataSource numberMasterDataSource() {
    return DataSourceBuilder.create().build();
  }

  @Bean
  @ConfigurationProperties(prefix = "datasource.secondary")
  public DataSource provisioningDataSource() {
    return DataSourceBuilder.create().build();
  }
}
# Primary DataSource configuration
datasource.primary.url=jdbc:mysql://127.0.0.1:3306/jpa
datasource.primary.username=root
datasource.primary.password=root
# Any of the other Spring supported properties below...

# Secondary DataSource configuration
datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/jpa2
datasource.secondary.username=root
datasource.secondary.password=root