当前位置: 首页 > 知识库问答 >
问题:

使用Redis的Spring Boot会话中出错-没有符合条件的类型[...SessionRepository]

秦联
2023-03-14

我正在遵循spring官方教程,将redis会话支持添加到Spring Boot中。

pom.xml

    ...
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.1.RELEASE</version>
    ...
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session</artifactId>
    ... 
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-redis</artifactId>
    ...

我没有将版本添加到spring会话中,因为从1.3.0开始。release启动了spring boot,jar包含在其中。即使按照教程添加1.0.2.release版本也没有解决我的问题

请注意spring-boot1.3.1.release,使用的spring版本是4.2.4.release

配置

@EnableRedisHttpSession
public class HttpSessionConfig {
}

属性文件

#redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

我没有添加秘密,因为我的redis服务器密码是空的。即使添加密码也不能解决我的问题。

当我运行应用程序时,它会出现以下错误

由:..NosuchBeanDefinitionException引起:没有为Dependency找到类型[...SessionRepository]的合格bean:Expect...Endency。依赖项批注:{}

我还为下面的参考添加了完整的错误堆栈

016-01-05 01:49:50.775 ERROR 7616 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    ...
    at com.enbiso.proj.estudo.Application.main(Application.java:25) [classes/:na]
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:99) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    ...
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE]
    ... 8 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springSessionRepositoryFilter' defined in class path resource [org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.springframework.session.SessionRepository]: : No qualifying bean of type [org.springframework.session.SessionRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.session.SessionRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:464) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ...
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_20]
    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_20]
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.session.SessionRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ...
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ... 27 common frames omitted

共有1个答案

丌官远
2023-03-14

您缺少创建RedisConnectionFactory步骤。

试试这个:

@EnableRedisHttpSession
public class HttpSessionConfig {
        @Bean
        public JedisConnectionFactory connectionFactory() {
                return new JedisConnectionFactory(); 
        }
}
 类似资料:
  • 我已经浏览了http://docs.spring.io/spring-data/redis/docs/current/reference/html/,对我来说没有什么新内容。我想知道我错过了什么,我将感谢任何投入。 我使用Spring Data Redis 1.7.2.Release,Spring Boot 1.3.6.Release

  • 我正在用Spring Boot实现Rest API。因为我的实体类来自另一个包,所以我必须用注释来指定它。另外,我使用来指定定义JPA存储库的包。下面是我的项目的样子: 在我的controller类中,我有一个SeqService对象Autowired。 是一个接口,我从它为创建了一个Bean类。在中,我对JPA存储库进行了描述: 我不明白这个错误。和排位赛bean有什么关系?

  • 运行在Mongo存储库的单元测试中返回以下错误: UserRepositoryMongoImpl.java UserRepositoryMongoImplTests.java 最后一个:pom.xml null

  • 我将会话保存在yii2中的mysql db中,但有时会出现错误问题،我认为会话会在一段时间内破坏并显示错误消息,当我刷新页面时,问题就解决了 错误消息: PHP通知'yii\base\ErrorExc0019',消息'Un定义属性:应用程序\组件\用户::$id'在D:\xampp\htdocs\MyTrip\app\组件\User.php:39堆栈跟踪:#0 D:\xampp\htdocs\My

  • 在Spring Boot的文档中,我只找到了使用Redis会话的例子,不使用Redis也能使用它吗?

  • 问题内容: 有没有一种方法可以在PHP中启动持久性会话而无需放置会话cookie?是否还有其他方法可以跨页面维护会话,例如基于IP地址的解决方案? 我问的原因是,尽管大多数用户都启用了cookie,但我想看看是否有一种方法可以使禁用它的用户使用登录系统(即使我个人认为禁用cookie只是不必要的偏执狂)。 问题答案: 我认为要求您的用户启用Cookie并不过分。当人们完全关闭它们时,我觉得很愚蠢。