我一直在尝试配置两个或多个数据源。
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写,会有太多的冗余代码