Spring Data JPA多数据源

时间:2017-03-28 04:13:05

标签: spring-boot spring-data-jpa

我一直在尝试配置两个或多个数据源。

https://www.ccampo.me/java/spring/2016/02/13/multi-datasource-spring-boot.html

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

我创建了配置类&在application.prop文件中添加了prop。但是如何在repo函数/服务函数中定义它们呢?

控制器

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();
  }
}

application.properties

# 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

另外,我不想为不同的数据源提供单独的存储库 我有不同的数据库用于Read&amp;写。所以我的所有插入查询都将在一台服务器和读取其他服务器上的查询。如果我为read&amp;创建不同的repo / service写,会有太多的冗余代码

1 个答案:

答案 0 :(得分:-2)

详细了解example。您将使用包配置两个不同的数据源,单独的存储库和模型,并为特定包配置数据源。