我正在尝试使用springboot-data-couchbase配置多个couchbase数据源。
这是我尝试将两个具有两个存储库的Couchbase源附加在一起的方式。
@Configuration
@EnableCouchbaseRepositories("com.xyz.abc")
public class AbcDatasource extends AbstractCouchbaseConfiguration {
@Override
protected List<String> getBootstrapHosts() {
return Collections.singletonList("ip_address_of_couchbase");
}
//bucket_name
@Override
protected String getBucketName() {
return "bucket_name";
}
//password
@Override
protected String getBucketPassword() {
return "user_password";
}
@Override
@Bean(destroyMethod = "disconnect", name = "COUCHBASE_CLUSTER_2")
public Cluster couchbaseCluster() throws Exception {
return CouchbaseCluster.create(couchbaseEnvironment(), "ip_address_of_couchbase");
}
@Bean( name = "BUCKET2")
public Bucket bucket2() throws Exception {
return this.couchbaseCluster().openBucket("bucket2", "somepassword");
}
@Bean( name = "BUCKET2_TEMPLATE")
public CouchbaseTemplate newTemplateForBucket2() throws Exception {
CouchbaseTemplate template = new CouchbaseTemplate(
couchbaseClusterInfo(), //reuse the default bean
bucket2(), //the bucket is non-default
mappingCouchbaseConverter(), translationService()
);
template.setDefaultConsistency(getDefaultConsistency());
return template;
}
@Override
public void configureRepositoryOperationsMapping(RepositoryOperationsMapping baseMapping) {
baseMapping
.mapEntity(SomeDAOUsedInSomeRepository.class, newTemplateForBucket2());
}
}
similarly:
@Configuration
@EnableCouchbaseRepositories("com.xyz.mln")
public class MlnDatasource extends AbstractCouchbaseConfiguration {...}
现在的问题是没有直接的方法可以通过将不同的bean附加到这些配置来指定基于名称空间的数据源,例如springdata-jpa中,因为springdata-jpa支持使用实体管理器工厂引用和事务管理器来支持此功能参考
Due to which only one configuration is being picked whoever comes first.
Any suggestion is greatly appreciated.
相关问题:Use Spring Data Couchbase to connect to different Couchbase clusters
答案 0 :(得分:0)
@anshul,您快到了。 将数据源之一设置为@primary,默认情况下将使用它作为存储桶。
您想使用其他存储桶的地方。仅在服务类中使用特定的Bean,并使用以下限定符即可:
@Qualifier(value = "BUCKET1_TEMPLATE")
@Autowired
CouchbaseTemplate couchbaseTemplate;
现在,您可以使用此模板在所需的存储桶上执行所有与沙发相关的操作。