Spring数据可以与CouchDB一起使用吗?我知道有一个社区项目Spring-Data-Couchbase但是它与CouchDB兼容还是仅适用于Couchbase?
如果没有,是否有CouchDB版本的Spring-data?或者我无法在CouchDB中使用spring-data?
使用Spring Boot 1.4.1.Release和Spring Data Couchbase 2.1.3.RELEASE的组合,有没有办法防止应用程序启动失败,如果它无法连接到couchbase?
当前行为:应用程序无法在启动和退出时连接到couchbase.
目标:应用程序将继续启动,即使它无法连接到Couchbase,使用CouchbaseEnvironment中的超时配置,并不断尝试在后台连接.
在Spring Boot中,我们可以将Spring JDBC配置为在启动时忽略失败spring.datasource.continue-on-error=true.Spring Data Couchbase中是否有类似的机会加上重试失败?
java couchbase spring-data spring-boot spring-data-couchbase
我在Spring Boot中创建了一个实用程序,用于以更通用的方式将数据连接和插入/添加到沙发床中。
我有这样的事情:
public interface GenericRepository extends CouchbaseRepository<MyClass, String> {
}
Run Code Online (Sandbox Code Playgroud)
在那里我有MyClass我愿意接受任何形式的文件插入到couchbase。
我尝试了一些类似使用通用类型T的操作,但没有成功,因为出现以下错误:
原因:org.springframework.data.mapping.MappingException:找不到类型类java.lang.Object的PersistentEntity!
我的结构是:服务(接口/ Impl)> DAO(接口/ Impl)>存储库
额外信息:在上述模型中,我传递了通用类型T。我通过带有@Document注释的Pojo调用服务。
目标是消除每种文档类型具有一个存储库类的“依赖性”。
引起:org.springframework.data.mapping.model.MappingException:在org.springframework.data.couchbase.core.convert.MappingCouchbaseConverter.read(MappingCouchbaseConverter.java:140)找不到java.lang.Object的映射元数据
尝试从我的couchbase服务器检索文档时收到此错误.该文档是一个简单的JSON对象,其中包含嵌套对象以及JSON对象列表.当文档仅包含列表时,我能够成功获取文档,但是当嵌套对象存在时,我无法成功获取文档.
我是否必须将任何嵌套对象定义为couchbase和spring的java类,或者我错过了什么.
我正在寻找一种使用 Spring Data Couchbase 连接到两个单独的 Couchbase 集群的方法。查看文档和实现,尚不清楚如何执行此操作,我担心如果有两个扩展的配置,将会出现 bean 名称冲突AbstractCouchbaseConfiguration。唯一看起来很接近的是使用RepositoryOperationsMapping为不同的存储库指定不同的模板。然而,这并不符合我的需求,因为每个 Couchbase 配置都不会意识到另一个配置。我现在看到这样做的唯一方法是要么不使用AbstractCouchbaseConfiguration和设置我自己的bean,要么覆盖所有beanAbstractCouchbaseConfiguration并提供新的bean名称。在每种情况下,我都会覆盖注释中的 couchbase 模板 bean 名称@EnableCouchbaseRepositories。但是,我不确定这是否有效或者是否有更好的选择。
这可能吗?如果可以,我应该采取什么最佳路线?
谢谢
我正在设置一个带有@Id注释的文档,在我的测试中我得到了一个,MappingException因为在创建新文档时没有设置 Id。spring-data + couchbase 无法自动为新文档分配ID?
我最近建立了一个使用Spring-Data-Couchbase的新项目,而我对如何在此处进行单元和集成测试完全感到困惑。
通常,使用JPA,我可以以某种方式模拟我的存储库(假设对于使用Spring的长沙发来说这是相似的),并且对于单元测试来说还可以,但是通常对于JPA,我连接一个内存数据库并具有完整的集成测试套件。有什么办法可以通过沙发床做到这一点?
另外,如果您不介意在此处提及任何提示,因为这是我的第一个主要NoSQL项目:)谢谢!
我对 couchbase 查询计划的工作方式理解有问题。我将 SpringData 与 Couchbase 4.1 结合使用,并提供 Couchbase 存储库的自定义实现。在我的 Couchbase 存储库的自定义实现中,我有以下方法:
String queryAsString = "SELECT MyDatabase.*, META().id as _ID, META().cas as _CAS FROM MyDatabase WHERE segmentId = $id AND _class = $class ORDER BY executionTime DESC LIMIT 1";
JsonObject params = JsonObject.create()
.put(CLASS_VARIABLE, MyClass.class.getCanonicalName())
.put(ID_VARIABLE, segmentId);
N1qlQuery query = N1qlQuery.parameterized(queryAsString, params);
List<MyClass> resultList = couchbaseTemplate.findByN1QL(query, SegmentMembers.class);
return resultList.isEmpty() ? null : resultList.get(0);
Run Code Online (Sandbox Code Playgroud)
结果,Spring Data 生成以下 json 对象,表示对 Couchbase 的查询:
{
"$class":"path/MyClass",
"statement":"SELECT MyDatabase.*, META().id as _ID, META().cas as _CAS …Run Code Online (Sandbox Code Playgroud) java couchbase spring-data spring-data-couchbase couchbase-java-api
我想使用测试我的控制器@WebMvcTest并模拟依赖项来测试我的控制器,但 Spring Boot 的 AutoConfiguration 会自动加载我的 Couchbase(Spring Data)配置。Couchbase 在某些运行测试的平台上不可用,因此 Test 类将抛出异常。如何从自动配置机制中排除某些类?
我尝试了andexcludeFilters的选项@WebMvcTest@ActiveProfile,但这不起作用。
测试配置:
@RunWith(SpringRunner.class)
@WebMvcTest(value = ExchangeJobImportController.class, excludeFilters = @ComponentScan.Filter(classes = CouchbaseConfiguration.class))
@ActiveProfiles("test")
public class ExchangeJobImportControllerTest {
...
}
Run Code Online (Sandbox Code Playgroud)
沙发底座配置:
@Configuration
@EnableCouchbaseAuditing
@EnableConfigurationProperties({CouchbaseProperties.class})
@EnableCouchbaseRepositories(basePackages = "com....")
public class CouchbaseConfiguration extends AbstractCouchbaseConfiguration {
...
}
Run Code Online (Sandbox Code Playgroud) spring unit-testing spring-mvc spring-boot spring-data-couchbase
我希望能够在Couchbase中更新或创建文档时进行一些数据操作。
文档可以通过Sync Gateway或我们自己的从http服务流式传输数据的代码到达我们的数据库。拥有一个可以拦截所有更新的位置,将是很棒的。
我们正在对此数据运行一个Spring Boot REST API,因此这是拥有拦截器/侦听器的好地方。无论哪种方式,我都倾向于Java解决方案。
数据被编写为JSON而不是使用Spring实体,所以我不能使用仅侦听Entity类事件的ApplicationListener。如果我错了纠正我。我可以找到一些珍贵的设置ApplicationListeners的示例,因此我在这里可能错了,但似乎无法正常工作。
我看到有一个Eventing服务,您可以在其中编写Java脚本,但是由于多种原因,我不希望这样做。我不希望在平台和语言之间分散我们的API代码,也不确定是否可以在我们的系统上运行事件服务,等等。同样,我也可以公开辩论。
就我所知,这仅使DCP显得很低。 https://blog.couchbase.com/couchbases-history-everything-dcp/,但看起来像是完成这项工作的工具。
问题:是否有另一种较低级别的方法来捕获Couchbase中的JSON对象(不是DCP实体)的更新事件。
couchbase ×7
java ×6
spring ×3
spring-boot ×3
spring-data ×3
unit-testing ×2
couchdb ×1
generics ×1
spring-mvc ×1