【发布时间】:2021-11-01 07:29:57
【问题描述】:
为了实现某种命名空间,我需要在整个 Spring 应用程序中为 Redis JPA 存储库的键添加一个静态字符串前缀。
我读到了 spring.cache.redis.key-prefix 配置选项,但它似乎只适用于缓存。
如何为 JPA 存储库获得相同的行为?
【问题讨论】:
为了实现某种命名空间,我需要在整个 Spring 应用程序中为 Redis JPA 存储库的键添加一个静态字符串前缀。
我读到了 spring.cache.redis.key-prefix 配置选项,但它似乎只适用于缓存。
如何为 JPA 存储库获得相同的行为?
【问题讨论】:
在你的@EnableRedisReposiories 你可以这样做:
@EnableRedisRepositories(keyspaceConfiguration = MyCustomKeyspaceConfiguration.class)
然后在 App config 中添加 RedisMappingContext bean 和客户键空间配置类:
@Bean
public RedisMappingContext keyValueMappingContext() {
return new RedisMappingContext(
new MappingConfiguration(new IndexConfiguration(), new MyCustomKeyspaceConfiguration()));
}
public static class MyCustomKeyspaceConfiguration extends KeyspaceConfiguration {
@Override
protected Iterable<KeyspaceSettings> initialConfiguration() {
List<KeyspaceSetting> settings = new ArrayList<KeyspaceSetting>();
settings.add(new KeyspaceSetting(Foo.class, "my-prefix" + Foo.class.getName()));
return settings;
}
}
在上面的例子中,我们说Foo 类的键前缀为"my-prefix"。 KeyspaceConfiguration 允许对某些类型的键空间和生存时间选项进行编程设置。
【讨论】: