对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

存储库接口的实例通常由容器创建,在使用 Spring Data 时,Spring 是最自然的选择。 Spring 为创建 Bean 实例提供了复杂的功能。 Spring Data Redis 附带了一个自定义 CDI 扩展,允许您在 CDI 环境中使用存储库抽象。 该扩展是 JAR 的一部分,因此,要激活它,请将 Spring Data Redis JAR 拖放到您的类路径中。Spring中文文档

然后,您可以通过为 和 实现 CDI 生产者来设置基础架构,如以下示例所示:RedisConnectionFactoryRedisOperationsSpring中文文档

class RedisOperationsProducer {


  @Produces
  RedisConnectionFactory redisConnectionFactory() {

    LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(new RedisStandaloneConfiguration());
    connectionFactory.afterPropertiesSet();
	connectionFactory.start();

    return connectionFactory;
  }

  void disposeRedisConnectionFactory(@Disposes RedisConnectionFactory redisConnectionFactory) throws Exception {

    if (redisConnectionFactory instanceof DisposableBean) {
      ((DisposableBean) redisConnectionFactory).destroy();
    }
  }

  @Produces
  @ApplicationScoped
  RedisOperations<byte[], byte[]> redisOperationsProducer(RedisConnectionFactory redisConnectionFactory) {

    RedisTemplate<byte[], byte[]> template = new RedisTemplate<byte[], byte[]>();
    template.setConnectionFactory(redisConnectionFactory);
    template.afterPropertiesSet();

    return template;
  }

}

必要的设置可能会有所不同,具体取决于您的 JavaEE 环境。Spring中文文档

Spring Data Redis CDI 扩展将所有可用的存储库选取为 CDI bean,并在容器请求存储库类型的 Bean 时为 Spring Data 存储库创建代理。 因此,获取 Spring Data 存储库的实例只需声明一个属性,如以下示例所示:@InjectedSpring中文文档

class RepositoryClient {

  @Inject
  PersonRepository repository;

  public void businessMethod() {
    List<Person> people = repository.findAll();
  }
}

Redis 存储库需要 和 实例。 如果未找到提供的 Bean,则由 Spring Data CDI 扩展创建和管理这些 Bean。 但是,您可以提供自己的 Bean 来配置 和 的特定属性。RedisKeyValueAdapterRedisKeyValueTemplateRedisKeyValueAdapterRedisKeyValueTemplateSpring中文文档