【问题标题】:How to use Couchbase Java Client in a Dropwizard Project?如何在 Dropwizard 项目中使用 Couchbase Java 客户端?
【发布时间】:2016-07-22 23:53:08
【问题描述】:
【问题讨论】:
标签:
java
jackson
couchbase
dropwizard
【解决方案1】:
绝对可以将 Couchbase 与 Dropwizard 一起使用。客户端 SDK 提供 JSON 操作对象以方便开发人员,但它也允许将 JSON 处理委托给 Jackson 或 GSON 等库。
看看RawJsonDocument 类here。
基本上,您可以使用字符串化 JSON(来自任何框架)来创建其中一个对象,客户端 SDK 会将其理解为任何操作的 JSON 文档,即:
String content = "{\"hello\": \"couchbase\", \"active\": true}";
bucket.upsert(RawJsonDocument.create("rawJsonDoc", content));
【解决方案2】:
应该可以做到这一点。
- 客户端向 dw 服务器请求资源人。
- DW 服务器对 couchebase 的请求,返回代表 Person 的 Pojo 或代表 Person 的 JSON。
- 如果是 JSON,在 DW 中创建一个带有 Jackson 注释的 POJO 并将其返回给客户端
- 如果是特殊的 couchebase pojo,请将其映射到 Jackson pojo 并返回给客户
【解决方案3】:
基于@CamiloCrespo答案的解决方案:
public static Document<String> toDocument(String id, Object value,
ObjectMapper mapper) throws JsonProcessingException {
return RawJsonDocument.create(id, mapper.writeValueAsString(value));
}
请记住,您不能将ObjectMapper mapper = new ObjectMapper() 之类的简单映射器与Dropwizard 一起使用。
您可以通过Application#run() 方法从Environment#getObjectMapper() 获取它,或者使用Jackson.newObjectMapper() 进行测试。
使用示例:
ObjectMapper mapper = Jackson.newObjectMapper();
User user = User.createByLoginAndName("login", "name");
bucket.insert(toDocument("123", user, mapper));