I have a project which uses spring boot which uses spring-boot-starter-data-redis to manage distributed session, which was running fine.
I tried to migrate to spring boot 3, i was getting the below error.
Consider defining a bean of type 'org.springframework.session.data.redis.RedisIndexedSessionRepository' in your configuration
To fix the above error I have defined a bean as below.
@Bean public RedisIndexedSessionRepository redisIndexedSessionRepository(RedisTemplate<String, Object> redisTemplate) { return new RedisIndexedSessionRepository(redisTemplate); }
After this a new error popped up as below.
required a single bean, but 2 were found: - redisIndexedSessionRepository: defined by method 'redisIndexedSessionRepository' in class path resource [com/google/ussm/config/UssmConfig.class] - sessionRepository: defined by method 'sessionRepository' in class path resource [org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.class]
To fix this error the below code came into handy.
@Primary @Bean public RedisIndexedSessionRepository redisIndexedSessionRepository(RedisTemplate<String, Object> redisTemplate) { return new RedisIndexedSessionRepository(redisTemplate); }
Now the the application is running fine , but the SessionExpiredEvent
and SessionDeletedEvent
not being fired in the application.
Also I have noticed that in redis :index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME
is missing , which constitutes the above problem.
Requesting any suggestion to fix this error.
Thanks in advance.