Skip to content

Commit fe3f40c

Browse files
committed
Harmonize Redis configurations
This commit improves reactive Redis configuration by adding support for connection factory qualifier and Redis operations resolver annotations.
1 parent f8583bb commit fe3f40c

File tree

10 files changed

+185
-35
lines changed

10 files changed

+185
-35
lines changed

samples/boot/redis-json/src/integration-test/java/sample/RedisSerializerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.springframework.context.ConfigurableApplicationContext;
2828
import org.springframework.data.redis.core.RedisTemplate;
2929
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
30-
import org.springframework.session.data.redis.config.annotation.web.http.SpringSessionRedisOperations;
30+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisOperations;
3131
import org.springframework.test.context.ContextConfiguration;
3232
import org.springframework.test.context.junit4.SpringRunner;
3333

spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryITests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import org.springframework.session.Session;
3838
import org.springframework.session.data.SessionEventRegistry;
3939
import org.springframework.session.data.redis.RedisOperationsSessionRepository.RedisSession;
40+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisOperations;
4041
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
41-
import org.springframework.session.data.redis.config.annotation.web.http.SpringSessionRedisOperations;
4242
import org.springframework.session.events.SessionCreatedEvent;
4343
import org.springframework.session.events.SessionDestroyedEvent;
4444
import org.springframework.test.context.ContextConfiguration;

spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/taskexecutor/RedisListenerContainerTaskExecutorITests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import org.springframework.data.redis.core.BoundSetOperations;
3232
import org.springframework.data.redis.core.RedisOperations;
3333
import org.springframework.session.data.redis.AbstractRedisITests;
34+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisOperations;
3435
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
35-
import org.springframework.session.data.redis.config.annotation.web.http.SpringSessionRedisOperations;
3636
import org.springframework.test.context.ContextConfiguration;
3737
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
3838
import org.springframework.test.context.web.WebAppConfiguration;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.session.data.redis.config.annotation.web.http;
17+
package org.springframework.session.data.redis.config.annotation;
1818

1919
import java.lang.annotation.Documented;
2020
import java.lang.annotation.ElementType;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.session.data.redis.config.annotation.web.http;
17+
package org.springframework.session.data.redis.config.annotation;
1818

1919
import java.lang.annotation.Documented;
2020
import java.lang.annotation.ElementType;

spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
4949
import org.springframework.session.data.redis.config.ConfigureNotifyKeyspaceEventsAction;
5050
import org.springframework.session.data.redis.config.ConfigureRedisAction;
51+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisConnectionFactory;
5152
import org.springframework.session.web.http.SessionRepositoryFilter;
5253
import org.springframework.util.Assert;
5354
import org.springframework.util.StringUtils;

spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/server/RedisWebSessionConfiguration.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.util.Map;
2020

21+
import org.springframework.beans.factory.ObjectProvider;
22+
import org.springframework.beans.factory.annotation.Autowired;
2123
import org.springframework.context.EmbeddedValueResolverAware;
2224
import org.springframework.context.annotation.Bean;
2325
import org.springframework.context.annotation.Configuration;
@@ -33,6 +35,7 @@
3335
import org.springframework.session.config.annotation.web.server.SpringWebSessionConfiguration;
3436
import org.springframework.session.data.redis.ReactiveRedisOperationsSessionRepository;
3537
import org.springframework.session.data.redis.RedisFlushMode;
38+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisConnectionFactory;
3639
import org.springframework.util.Assert;
3740
import org.springframework.util.StringUtils;
3841
import org.springframework.util.StringValueResolver;
@@ -61,20 +64,19 @@ public class RedisWebSessionConfiguration extends SpringWebSessionConfiguration
6164

6265
private RedisFlushMode redisFlushMode = RedisFlushMode.ON_SAVE;
6366

67+
private ReactiveRedisConnectionFactory redisConnectionFactory;
68+
6469
private StringValueResolver embeddedValueResolver;
6570

6671
@Bean
67-
public ReactiveRedisOperationsSessionRepository sessionRepository(
68-
ReactiveRedisConnectionFactory redisConnectionFactory) {
72+
public ReactiveRedisOperationsSessionRepository sessionRepository() {
6973
ReactiveRedisOperationsSessionRepository sessionRepository = new ReactiveRedisOperationsSessionRepository(
70-
createDefaultTemplate(redisConnectionFactory));
74+
createDefaultTemplate(this.redisConnectionFactory));
7175
sessionRepository
7276
.setDefaultMaxInactiveInterval(this.maxInactiveIntervalInSeconds);
7377

74-
String redisNamespace = getRedisNamespace();
75-
76-
if (StringUtils.hasText(redisNamespace)) {
77-
sessionRepository.setRedisKeyNamespace(redisNamespace);
78+
if (StringUtils.hasText(this.redisNamespace)) {
79+
sessionRepository.setRedisKeyNamespace(this.redisNamespace);
7880
}
7981

8082
sessionRepository.setRedisFlushMode(this.redisFlushMode);
@@ -95,6 +97,18 @@ public void setRedisFlushMode(RedisFlushMode redisFlushMode) {
9597
this.redisFlushMode = redisFlushMode;
9698
}
9799

100+
@Autowired
101+
public void setRedisConnectionFactory(
102+
@SpringSessionRedisConnectionFactory ObjectProvider<ReactiveRedisConnectionFactory> springSessionRedisConnectionFactory,
103+
ObjectProvider<ReactiveRedisConnectionFactory> redisConnectionFactory) {
104+
ReactiveRedisConnectionFactory redisConnectionFactoryToUse = springSessionRedisConnectionFactory
105+
.getIfAvailable();
106+
if (redisConnectionFactoryToUse == null) {
107+
redisConnectionFactoryToUse = redisConnectionFactory.getObject();
108+
}
109+
this.redisConnectionFactory = redisConnectionFactoryToUse;
110+
}
111+
98112
@Override
99113
public void setEmbeddedValueResolver(StringValueResolver resolver) {
100114
this.embeddedValueResolver = resolver;
@@ -127,12 +141,4 @@ private static ReactiveRedisTemplate<String, Object> createDefaultTemplate(
127141
return new ReactiveRedisTemplate<>(connectionFactory, serializationContext);
128142
}
129143

130-
private String getRedisNamespace() {
131-
if (StringUtils.hasText(this.redisNamespace)) {
132-
return this.redisNamespace;
133-
}
134-
135-
return System.getProperty("spring.session.redis.namespace", "");
136-
}
137-
138144
}

spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationOverrideDefaultSerializerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.data.redis.connection.RedisConnectionFactory;
2929
import org.springframework.data.redis.core.RedisTemplate;
3030
import org.springframework.data.redis.serializer.RedisSerializer;
31+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisOperations;
3132
import org.springframework.test.context.ContextConfiguration;
3233
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
3334
import org.springframework.test.context.web.WebAppConfiguration;

spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfigurationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.springframework.data.redis.core.RedisOperations;
3636
import org.springframework.mock.env.MockEnvironment;
3737
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
38+
import org.springframework.session.data.redis.config.annotation.SpringSessionRedisConnectionFactory;
3839
import org.springframework.test.util.ReflectionTestUtils;
3940

4041
import static org.assertj.core.api.Assertions.assertThat;

0 commit comments

Comments
 (0)