SpringBoot2集成Couchbase
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