2016-01-04 4 views
1

Я следую официальному уроку весны, чтобы добавить поддержку сеанса redis для загрузки весны.Ошибка в Spring загрузки Сессия с Redis - нет квалификационного компонента типа [... SessionRepository]

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html

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> 
    ... 

Я не добавить версию к весне сессий как из 1.3.0.RELEASE яровой ботинка, баночка входит в него. Даже добавление версии 1.0.2.RELEASE согласно учебника не решить мою проблему

Пожалуйста, обратите внимание, с пружинным ботинке 1.3.1.RELEASE, версия пружины используется 4.2.4.RELEASE

Конфигурация

@EnableRedisHttpSession 
public class HttpSessionConfig { 
} 

Свойства файл

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

Я не добавлял секрет, так как мой пароль сервера redis пуст. Даже добавление пароля не помогло решить мою проблему.

При запуске приложения оно выдает следующую ошибку

Вызванный: ..NoSuchBeanDefinitionException: Нет квалификационную боб типа [... SessionRepository] найдено зависимость: ожидать ... 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 
+0

отправить файл, который фасоли – Abdelhak

+0

Я не получил вас. Какой бобовый файл вы хотите? В связи с Redis я не создал никаких бобов. Я что-то пропустил? –

+0

Где определить этот компонент SessionRepository – Abdelhak

ответ

0

Вы пропускаете создать шаг RedisConnectionFactory.

Попробуйте это:

@EnableRedisHttpSession 
public class HttpSessionConfig { 
     @Bean 
     public JedisConnectionFactory connectionFactory() { 
       return new JedisConnectionFactory(); 
     } 
} 
0

Те шаги, я затем, чтобы решить эту проблему:

1 - application.properties:

spring.session.store-type=redis 
spring.redis.host=localhost 
spring.redis.password=Password123OrSomething 
spring.redis.port=1234 

2 - pom.xml

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>4.3.3.RELEASE</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework.session</groupId> 
    <artifactId>spring-session</artifactId> 
    <version>1.3.0.RELEASE</version> 
</dependency> 

<dependency> 
<groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-redis</artifactId> 
    <version>1.7.4.RELEASE</version> 
</dependency> 

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-redis</artifactId> 
</dependency> 

3 - Re dis Configuration Class (Весенняя загрузка):

@ConditionalOnProperty(name = "spring.session.store-type", havingValue = "redis") 
@EnableRedisHttpSession 
public class RedisSessionConfig { 

    @Value("${spring.session.store-type}") 
    private String sessionStoreType; 

    private static final Logger LOGGER = LoggerFactory.getLogger(RedisSessionConfig.class); 

    @PostConstruct 
    public void init() { 
    LOGGER.info("spring.session.store-type=none turns spring session off."); 
    LOGGER.info("Redis Session Replication is turned {}.", sessionStoreType.equals("redis") ? "ON" 
     : "OFF"); 
    } 

    @Bean 
    public ConfigureRedisAction configureRedisAction() { 
    LOGGER.info("Preventing auto-configuration in secured environments."); 
    return ConfigureRedisAction.NO_OP; 
    } 
} 
Смежные вопросы