首页 文章

具有Spring-boot XML配置的Couchbase 5.0

提问于
浏览
0

How to Spring-boot XML configuration with couchbase 5.0?

Full story: 最近, upgraded couchbase server from 4.0.0-4051 to 5.0.0 build 3519 (两者都是社区版本) . Couchbase 4.0是基于存储桶的授权,couchbase 5.0成为基于角色的访问控制(RBAC) . (用户可以访问特定的存储桶) . 我有一个Spring-boot应用程序,所有配置都是通过XML bean . 它与couchbase 4.0完美配合,但当我更改为couchbase 5.0时(注意所有凭据都是正确的)我收到以下错误:

引起:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'userServiceImpl'的bean时出错:通过字段'userRepo'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:在org.springframework.beans的org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)中没有名为'couchbaseRepositoryOperationsMapping'的bean . org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean上的org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)中的factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)(在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)的org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)org的AbstractAutowireCapableBeanFactory.java:1264 .springframewo位于org.springframework.beans.factory.support的org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)中的rk.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306) .AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java) :或者org.springframework上org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)的org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) . beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)... 25更多引起:org.springframework.bean s.factory.NoSuchBeanDefinitionException:在org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory)的org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)中没有名为'couchbaseRepositoryOperationsMapping'的bean . .java:1207)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)at org . springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)位于org.springframework.beans.factory.config的org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) . org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFact)中的DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) ory.java:1138)org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) ......还有38个

我的依赖是:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.5.RELEASE</version>
</parent>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-couchbase</artifactId>
</dependency>

我可以通过这个代码(如这里所解释的https://blog.couchbase.com/new-sdk-authentication/)通过手动couchbase客户端配置(我已经做了一个样本并经过测试)来解决这个问题:

Cluster cluster = CouchbaseCluster.create(); cluster.authenticate("username", "password"); Bucket bucket = cluster.openBucket("bucket-name");

(如果此处需要来源是https://github.com/mashhur/twitter_blockchain

无论如何XML选项将非常感谢!

1 回答

  • 0

    使用Spring Boot和Spring Data提供更好的RBAC支持 . 这是当前的里程碑,应该很快就会发布!请参阅针对Kay SR6和Lovelace的DATACOUCH-322M2 .

    另外,请注意,只需创建名称与存储桶相同的用户,即可使5.0的行为与早期版本相同 .

相关问题