首页 > 解决方案 > CouchbaseHttpSessionConfiguration 中的 couchbaseSessionRepository 需要一个 'com.couchbase.client.java.Bucket' 类型的 bean

问题描述

我正在尝试在其中一个应用程序中使用 @EnableCouchbaseHttpSession 将会话存储在 couchBase 中。

@SpringBootApplication
@EnableCouchbaseHttpSession(keepStringAsLiteral = true)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

CouchBase 配置 @Configuration @EnableCouchbaseRepositories @Getter 公共类 CouchbaseConfigurations 扩展 AbstractCouchbaseConfiguration {

    @Value("${couchbase.connectionString}")
    private String connectionString;

    @Value("${couchbase.username}")
    private String userName;

    @Value("${couchbase.password}")
    private String password;

    @Value("${couchbase.bucket}")
    private String bucketName;

}

使用的依赖

<dependency>
            <groupId>io.github.couchbaselabs</groupId>
            <artifactId>spring-session-data-couchbase</artifactId>
            <version>1.1.1</version>
        </dependency>
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-couchbase</artifactId>
        </dependency>

启动应用程序后,应用程序未启动并出现错误

错误日志

启动 Tomcat 上下文时出错。例外:org.springframework.beans.factory.UnsatisfiedDependencyException。消息:在类路径资源 [org/springframework/boot/autoconfigure/session/SessionRepositoryFilterConfiguration.class] 中定义名称为 'sessionRepositoryFilterRegistration' 的 bean 创建错误:通过方法 'sessionRepositoryFilterRegistration' 参数 1 表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:创建 org.springframework.session.data.couchbase.config.annotation.web.http.CouchbaseHttpSessionConfiguration 中定义的名称为“springSessionRepositoryFilter”的 bean 时出错:通过方法“springSessionRepositoryFilter”表示不满足的依赖关系' 参数 0; 嵌套异常是 org.springframework.beans.factory。UnsatisfiedDependencyException:创建 org.springframework.session.data.couchbase.config.annotation.web.http.CouchbaseHttpSessionConfiguration 中定义的名称为“couchbaseSessionRepository”的 bean 时出错:通过方法“couchbaseSessionRepository”参数 0 表示的不满足依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.couchbase.client.java.Bucket”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{} 参数0;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.couchbase.client.java.Bucket”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{} 参数0;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.couchbase.client.java.Bucket”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{}

org.springframework.session.data.couchbase.config.annotation.web.http.CouchbaseHttpSessionConfiguration 中方法 couchbaseSessionRepository 的参数 0 需要一个找不到的 'com.couchbase.client.java.Bucket' 类型的 bean。行动:考虑在你的配置中定义一个“com.couchbase.client.java.Bucket”类型的bean。

标签: javaspring-bootsessioncouchbasespring-data-couchbase

解决方案


从 Spring Boot 版本 2.3.X 及更高版本(spring-data-couchbase 4+)开始,在您的应用程序中创建 com.couchbase.client.java.Bucket 类型的 bean,Bucket bean 不再自动配置。

@Configuration
public class CouchbaseBucketConfig {
    private final CouchbaseClientFactory couchbaseClientFactory;

    public CouchbaseBucketConfig(CouchbaseClientFactory couchbaseClientFactory) {
        this.couchbaseClientFactory = couchbaseClientFactory;
    }

    @Bean
    public Bucket bucket(){
        return couchbaseClientFactory.getBucket();
    }
}

在您的 POM.xml 中添加“spring-session-data-couchbase”依赖项。请参阅 GithubCouchbase 文档

<dependency>
    <groupId>io.github.couchbaselabs</groupId>
    <artifactId>spring-session-data-couchbase</artifactId>
    <version>1.1.1</version>
</dependency>

这应该可以解决应用程序启动问题。

[期待进一步的编辑]


推荐阅读