SpringBoot2集成Couchbase

database

Couchbase 虽然是MongoDB最有潜力的竞争对手,但是其在数据库方面的开源程度还远远不够,很多高级特性都没有开放出来。目前虽然被SpringBoot加持有了一些光环,但是其文档和代码注释方面做的仍然逊色不少,这与其开源程度有着很大的关系。开源这把双刃剑,在这里其利弊表现得真是淋漓尽致。

 

废话少说,接下来是SpringBoot2集成Couchbase的详细步骤,请仔细阅读,以免不小心入坑。

目前,本项目使用的是SpringBoot 2.3.x版本, Spring Data Couchbase 4.0版本,关于该版本的更新可以参考这里:

https://my.oschina.net/crosschen/blog/4342796。

 

1) 加载依赖包

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-couchbase</artifactId>

</dependency>

 

2) 配置连接信息 application.yml

 

spring:

couchbase:

bucket-name: gate_way

bootstrap-hosts: 172.17.3.111

username: Administrator

password: zaq1xsw2

 

3) 动态加载数据库。 SpringBoot2并不会在配置Couchbase连接信息后自动加载该配置,目前需要通过配置类进行加载。CouchConfig.java

 

@Configuration

@EnableCouchbaseRepositories(basePackages = {"com.favccxx.gateway.repository"}, considerNestedRepositories = true)

public class CouchConfig extends AbstractCouchbaseConfiguration {

@Value("${spring.couchbase.bootstrap-hosts}")

private String host;

@Value("${spring.couchbase.username}")

private String userName;

@Value("${spring.couchbase.password}")

private String password;

@Value("${spring.couchbase.bucket-name}")

private String bucketName;

@Override

public String getConnectionString() {

return host;

}

@Override

public String getUserName() {

return userName;

}

@Override

public String getPassword() {

return password;

}

@Override

public String getBucketName() {

return bucketName;

}

@Override

protected boolean autoIndexCreation() {

return true;

}

@Override

public String typeKey() {

return MappingCouchbaseConverter.TYPEKEY_DEFAULT;

}

}

 

4) 自定义Repository。

 

注意: Couchbase在序列化嵌套对象时,会在数据库中添加content的属性,因此在查询对应的字段时需要使用claxx.content 返回具体值。

 

@Repository

public interface MessageRouteRepo extends CouchbaseRepository<MessageRoute, String> {

List<MessageRoute> findByRouteName(String routeName);

@Query("SELECT META().id AS __id, META().cas AS __cas, fromRoute.content as fromRoute, routeName, status FROM gate_way")

public List<MessageRoute> findByRoutes(String routeName);

}

 

5) 集成完成。

 

目前,Couchbase方面的文档在网上并不多,而且很多文档都已经过时了。如果读者需要使用Couchbase作为数据库,建议参考官方的资料,以免不必要的入坑。

 

 

参考资料: 

https://www.couchbase.com/

https://spring.io/projects/spring-data-couchbase

 

 

 

 

 

以上是 SpringBoot2集成Couchbase 的全部内容, 来源链接: utcz.com/z/534707.html

回到顶部