Переменные Env в классе данных в аннотации модели Redis

#java #spring #spring-boot #redis #model

#java #весна #весенняя загрузка #redis #Модель

Вопрос:

Проблема с указанием динамической переменной env в аннотации Redis класса модели @Hashkey.

Модель:

 @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

Может ли кто-нибудь помочь мне с этим?

Ответ №1:

Пожалуйста, используйте Keyspaces для этого. Есть два способа. Я использую один из способов выполнить ваше требование.

 @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));
    }
  }
}