当使用默认数据源以及使用内置spring jpa的方式时,spring效果很好。
所以目前我们要做的是
在application.properties中指定数据库的配置
myapp.datasource.url=jdbc:mysql:thin:@localhost:1521:myschema
myapp.datasource.username=user
myapp.datasource.password=password
myapp.datasource.driver-class=com.mysql.cj.jdbc.Driver
自定义数据源
@ConfigurationProperties(prefix = "myapp.datasource")
@Bean
public DataSource mySqlDataSource()
{
return DataSourceBuilder.create().build();
}
我们为多个客户端运行相同的应用程序。问题是每个客户端都有自己的数据库架构。
所以,现在的问题是我们需要能够为每个客户提供服务,但是为了做到这一点,我们需要创建多个数据源 例如:
@ConfigurationProperties(prefix = "myapp.partner1.datasource")
@Bean
public DataSource mySqlDataSourcePartner1()
{
return DataSourceBuilder.create().build();
}
@ConfigurationProperties(prefix = "myapp.partner2.datasource")
@Bean
public DataSource mySqlDataSourcePartner2()
{
return DataSourceBuilder.create().build();
}
@ConfigurationProperties(prefix = "myapp.partner3.datasource")
@Bean
public DataSource mySqlDataSourcePartner3()
{
return DataSourceBuilder.create().build();
}
and so on...
是否有通用且更有效的方法?将来如果在哪里添加新的合作伙伴,我们可以在应用程序属性中指定配置并使其正常工作?
答案 0 :(得分:0)
您可以对每个客户端使用单独的数据库来使用Spring Boot多租户模型。您可以将数据库配置保存在config-properties或数据库中,然后可以根据ClientId来获取数据源。您需要添加拦截器来拦截请求并确定租户。请参考以下示例
请检查