Redis
 sql >> Database >  >> NoSQL >> Redis

Come cablare automaticamente RedisTemplate

Lo stacktrace suggerisce che non hai definito il Bean che vorrai usare per iniettare in RedisTemplate .Puoi risolverlo creando un file di configurazione, ad es.

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

Una volta che hai il file di configurazione, devi passarlo a SpringApplication.run Es.

Object[] sources = {AppConfig.class};
ApplicationContext ctx = SpringApplication.run(sources, args);