Skip to content

Commit 7cf2488

Browse files
DATAREDIS-425 - Provide config option to pick up redisTemplate from context.
Added "redisTemplateRef" to @EnableRedisRepositories. The default points to "redisTemplate".
1 parent a50876a commit 7cf2488

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

src/main/java/org/springframework/data/redis/repository/configuration/EnableRedisRepositories.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.context.annotation.Import;
2828
import org.springframework.data.keyvalue.core.KeyValueOperations;
2929
import org.springframework.data.keyvalue.repository.config.QueryCreatorType;
30+
import org.springframework.data.redis.core.RedisOperations;
3031
import org.springframework.data.redis.core.index.IndexConfiguration;
3132
import org.springframework.data.redis.repository.query.RedisQueryCreator;
3233
import org.springframework.data.redis.repository.support.RedisRepositoryFactoryBean;
@@ -127,6 +128,13 @@
127128
*/
128129
boolean considerNestedRepositories() default false;
129130

131+
/**
132+
* Configures the bean name of the {@link RedisOperations} to be used. Defaulted to {@literal redisTemplate}.
133+
*
134+
* @return
135+
*/
136+
String redisTemplateRef() default "redisTemplate";
137+
130138
/**
131139
* TODO: explain configuration options
132140
*

src/main/java/org/springframework/data/redis/repository/configuration/RedisRepositoryConfigurationExtension.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.springframework.beans.DirectFieldAccessor;
1919
import org.springframework.beans.factory.config.ConstructorArgumentValues;
20+
import org.springframework.beans.factory.config.RuntimeBeanReference;
2021
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2122
import org.springframework.beans.factory.support.GenericBeanDefinition;
2223
import org.springframework.beans.factory.support.RootBeanDefinition;
@@ -25,6 +26,7 @@
2526
import org.springframework.data.keyvalue.repository.config.KeyValueRepositoryConfigurationExtension;
2627
import org.springframework.data.redis.core.RedisKeyValueAdapter;
2728
import org.springframework.data.repository.config.RepositoryConfigurationSource;
29+
import org.springframework.util.StringUtils;
2830

2931
/**
3032
* @author Christoph Strobl
@@ -75,6 +77,14 @@ protected AbstractBeanDefinition getDefaultKeyValueTemplateBeanDefinition(
7577
indexConfiguration.setBeanClass(aa.getClass("indexConfiguration"));
7678

7779
ConstructorArgumentValues constructorArgumentValuesForRedisKeyValueAdapter = new ConstructorArgumentValues();
80+
81+
String redisTemplateRef = configurationSource.getAttribute("redisTemplateRef");
82+
if (StringUtils.hasText(redisTemplateRef)) {
83+
84+
constructorArgumentValuesForRedisKeyValueAdapter.addGenericArgumentValue(new RuntimeBeanReference(
85+
redisTemplateRef));
86+
}
87+
7888
constructorArgumentValuesForRedisKeyValueAdapter.addGenericArgumentValue(indexConfiguration);
7989
redisKeyValueAdapterDefinition.setConstructorArgumentValues(constructorArgumentValuesForRedisKeyValueAdapter);
8090

src/test/java/org/springframework/data/redis/repository/RedisRepositoryIntegrationTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@
2929
import org.junit.Test;
3030
import org.junit.runner.RunWith;
3131
import org.springframework.beans.factory.annotation.Autowired;
32+
import org.springframework.context.annotation.Bean;
3233
import org.springframework.context.annotation.Configuration;
3334
import org.springframework.data.annotation.Id;
3435
import org.springframework.data.annotation.Reference;
3536
import org.springframework.data.keyvalue.annotation.KeySpace;
3637
import org.springframework.data.keyvalue.core.KeyValueTemplate;
38+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
39+
import org.springframework.data.redis.core.RedisTemplate;
3740
import org.springframework.data.redis.core.index.IndexConfiguration;
3841
import org.springframework.data.redis.core.index.Indexed;
3942
import org.springframework.data.redis.core.index.RedisIndexDefinition;
@@ -53,6 +56,18 @@ public class RedisRepositoryIntegrationTests {
5356
@EnableRedisRepositories(considerNestedRepositories = true, indexConfiguration = MyIndexConfiguration.class)
5457
static class Config {
5558

59+
@Bean
60+
RedisTemplate<?, ?> redisTemplate() {
61+
62+
JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
63+
connectionFactory.afterPropertiesSet();
64+
65+
RedisTemplate<byte[], byte[]> template = new RedisTemplate<byte[], byte[]>();
66+
template.setConnectionFactory(connectionFactory);
67+
68+
return template;
69+
}
70+
5671
}
5772

5873
@Autowired PersonRepository repo;

0 commit comments

Comments
 (0)