2015-11-11 102 views
1

在Couchbase文档中,给出了下面的示例来配置环境。有多个桶可以做什么?如何使用基于注释的配置在Couchbase中配置多个桶?

@Configuration 
 
public class Config extends AbstractCouchbaseConfiguration { 
 

 
    @Override 
 
    protected List<String> getBootstrapHosts() { 
 
     return Collections.singletonList("127.0.0.1"); 
 
    } 
 

 
    @Override 
 
    protected String getBucketName() { 
 
     return "beer-sample"; 
 
    } 
 

 
    @Override 
 
    protected String getBucketPassword() { 
 
     return ""; 
 
    } 
 
}

回答

0

对于2.0.x分支多桶,但目前的工作方式是,你必须实例化一个第二Bucket豆和相关CouchbaseTemplate(这是最难的部分):

//we want all User objects to be stored in a second bucket 
//let's define the bucket reference... 
@Bean 
public Bucket userBucket() { 
    return couchbaseCluster().openBucket("users", ""); 
} 

//... then the template (inspired by couchbaseTemplate() method)... 
@Bean 
public CouchbaseTemplate userTemplate() { 
    CouchbaseTemplate template = new CouchbaseTemplate(
    couchbaseClusterInfo(), //reuse the default bean 
    userBucket(), //the bucket is non-default 
    mappingCouchbaseConverter(), translationService() //default beans here as well 
); 
    template.setDefaultConsistency(getDefaultConsistency()); 
    return template; 
} 

之后,您可能还需要一些存储库使用第二个模板(和存储桶)。目前还有一个实现(RepositoryOperationsMapping),但它可能会稍微改变,直到即将到来的2.0.0-RC,所以我不会在那里详细讨论。

+0

感谢您的回复。为什么我需要一个Bucket bean,如果我已经有了一个模板?模板的目的不是封装Bucket并包装它的操作吗?此外,我可以通过getCouchbaseBucket方法获取Bucket - [api](http://docs.spring.io/spring-data/couchbase/docs/2.0.0.M1/api/org/springframework/data/couchbase/core /CouchbaseTemplate.html#getCouchbaseBucket--) - 如果我需要它,除非你提到的映射有任何特定的需要有一个Bucket bean。再次感谢 –

+0

那么如果你想存储到不同的桶中,模板提供了对桶操作的抽象,但它依赖于桶,所以没有办法创建对一个桶的引用 –

相关问题