首页 > 解决方案 > Redis模型注释中数据类中的环境变量

问题描述

无法在模型类 @Hashkey Redis 注释中指定动态环境变量。

模型:

@RedisHash("${spring.redis.namespace}:Book")
public class Book {
    @Id
    private String id;
    private String name;
}

我的 application.properties 文件:

spring.redis.namespace=local

结果键是 "${spring.redis.namespace}:Book" 而不是 local:Book

谁能帮我解决这个问题?

标签: javaspringspring-bootredismodel

解决方案


请使用键空间来做到这一点。有两种方法。我使用一种方法来完成您的要求。

@Configuration
@EnableRedisRepositories(keyspaceConfiguration = MyKeyspaceConfiguration.class)
public class ApplicationConfig {

  @Value("${spring.redis.namespace}:Book")
  String myKey;

  //... RedisConnectionFactory and RedisTemplate Bean definitions omitted

  public static class MyKeyspaceConfiguration extends KeyspaceConfiguration {

    @Override
    protected Iterable<KeyspaceSettings> initialConfiguration() {
      return Collections.singleton(new KeyspaceSettings(Book.class, myKey));
    }
  }
}

推荐阅读