Couchbase模板配置类

时间:2015-12-22 07:53:27

标签: spring couchbase spring-data-couchbase couchbase-java-api

我有一个Couchbase的Config类如下:

@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{

@Value("${couchbase.serverList:127.0.0.1}")
String IPS;
@Value("${couchbase.disabled}")
boolean disabled;

private static final Logger logger = LogManager.getLogger(CouchbaseConfig.class);
@Override
protected List<String> bootstrapHosts() {
    logger.info("Array List for Couch: " + IPS);
    return Arrays.asList(IPS.split(","));

}

为了使其更加团队友好我想添加一个参数禁用,如果一个成员没有在他的本地使用couchbase,则允许应用程序仍然运行。

有可能吗?

这样的东西存在于普通沙发基础配置中。

@PostConstruct
public void init() {
    if (disabled)
        return;

    logger.info("Opening couchbase connection.");
    try {
        cluster = CouchbaseCluster.create(Arrays.asList(hosts.split(",")));

2 个答案:

答案 0 :(得分:0)

您可以在Spring 4中使用来自@Conditional系列的一小组注释。这样,只有在满足注释描述的条件时,Spring才会考虑带注释的方法。

@Conditional可以放在声明@Bean的方法上,甚至可以放在整个@Configuration类上。在后一种情况下,配置中的所有bean以及组件扫描注释都将受条件限制。

您使用Spring Boot吗?

如果是,那么好消息! Spring Boot包含了很多@Conditional种口味。我认为一个特别适合您的需求:@ConditionalOnProperty

不要使用Spring Boot?

(试一试:p)

@Conditional annotation是Spring的核心,但你必须为它提供一个Condition实现类,所以由你来编码Condition(不是太复杂的接口,但仍然)。

春天是否超过4.x?

还有来自Spring 3.1的@Profile annotation的旧版本,您可以将配置分类为配置文件并在运行时激活一个特定的配置文件,但它不太灵活......

答案 1 :(得分:0)

试试这个:

...
@ConditionalOnProperty(prefix = "couchbase", name = "enabled", matchIfMissing = true)
@Configuration
@EnableCouchbaseRepositories
public class CouchbaseConfig extends AbstractCouchbaseConfiguration{
    @Value("${couchbase.serverList:127.0.0.1}")
    String IPS; 

    @Override
    protected List<String> bootstrapHosts() {
        return Arrays.asList(IPS.split(","));

    }
    ...
}