Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como o RedisTemplate é conectado automaticamente


O stacktrace sugere que você não definiu o Bean que gostaria de usar para injetar em RedisTemplate .Você pode resolvê-lo criando um arquivo de configuração, ex.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class AppConfig {
 @Bean
 JedisConnectionFactory jedisConnectionFactory() {
  return new JedisConnectionFactory();
 }

 @Bean
 RedisTemplate< String, Long > redisTemplate() {
  final RedisTemplate< String, Long > template =  new RedisTemplate< String, Long >();
  template.setConnectionFactory( jedisConnectionFactory() );
  template.setKeySerializer( new StringRedisSerializer() );
  template.setHashValueSerializer( new GenericToStringSerializer< Long >( Long.class ) );
  template.setValueSerializer( new GenericToStringSerializer< Long >( Long.class ) );
  return template;
 }
}

Depois de ter o arquivo de configuração, você precisa passá-lo para SpringApplication.run Por exemplo.
Object[] sources = {AppConfig.class};
ApplicationContext ctx = SpringApplication.run(sources, args);