SpringBoot2集成Couchbase
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
Couchbase 虽然是MongoDB最有潜力的竞争对手,但是其在数据库方面的开源程度还远远不够,很多高级特性都没有开放出来。目前虽然被SpringBoot加持有了一些光环,但是其文档和代码注释方面做的仍然逊色不少,这与其开源程度有着很大的关系。开源这把双刃剑,在这里其利弊表现得真是淋漓尽致。
废话少说,接下来是SpringBoot2集成Couchbase的详细步骤,请仔细阅读,以免不小心入坑。
目前,本项目使用的是SpringBoot 2.3.x版本, Spring Data Couchbase 4.0版本,关于该版本的更新可以参考这里: https://my.oschina.net/crosschen/blog/4342796。 1) 加载依赖包
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-couchbase
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 {
List findByRouteName(String routeName);
@Query("SELECT META().id AS __id, META().cas AS __cas, fromRoute.content as fromRoute, routeName, status FROM gate_way")
public List findByRoutes(String routeName);
}
5) 集成完成。 目前,Couchbase方面的文档在网上并不多,而且很多文档都已经过时了。如果读者需要使用Couchbase作为数据库,建议参考官方的资料,以免不必要的入坑。 参考资料: https://www.couchbase.com/ https://spring.io/projects/spring-data-couchbase
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341