大佬教程收集整理的这篇文章主要介绍了有条件地覆盖 springboot 中的默认数据源,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试以编程方式配置 spring 数据源。如果指定了租户信息,则想法是覆盖默认数据源,否则使用默认数据源以实现向后兼容性。我试着想出类似的东西:
@Component
@AllArgsConstructor
public class TenancyDataSource {
private TenantConfigs tenantConfigs;
private DataSource dataSource;
@Bean
public DataSource dataSource() {
String tenant = System.getenv(AppConstants.TENANT);
if (!ObjectUtils.isEmpty(tenant)) {
TenantConfigs config =
tenantConfigs
.getDataSources()
.stream()
.filter(TenantConfig -> tenantConfig.getTenantname().equals(tenant))
.findFirst()
.orElse(null);
if (!ObjectUtils.isEmpty(config)) {
return DataSourceBuilder.create()
.url(config.getUrl())
.password(config.getpassword())
.username(config.getUsername())
.build();
}
}
return dataSource;
}
}
但是由于循环依赖,这不起作用。 实现它的最佳方法是什么?
SpringBoot 默认将环境变量视为属性。所以将@ConditionalOnProperty 与“租户”属性一起使用
@Bean
@ConditionalOnProperty(name = AppConstants.TENANT)
public DataSource dataSource() {
return DataSourceBuilder.create()
.url(config.getUrl())
.password(config.getPassword())
.username(config.getUsername())
.build();
}
以上是大佬教程为你收集整理的有条件地覆盖 springboot 中的默认数据源全部内容,希望文章能够帮你解决有条件地覆盖 springboot 中的默认数据源所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。