Redis с бросками Springboot: конвертер не найден - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь использовать Redis в приложении с весенней загрузкой в ​​качестве кэша. Ниже описано, как я пытаюсь использовать.

RedisEntity.Java

@Getter
@Setter
@RedisHash
public class RedisEntity {
    @Id
    private RequestObject requestObject;
    private ResponseObject responseObject;

}

Репозиторий для Redis:

public interface RedisEntityRepository extends CrudRepository<RedisEntity, RequestObject> {

}

В классе обслуживания:

@Autowired
RedisEntityRepository redisEntityRepository;

redisEntityRepository.save(requestObject);

При попытке сохранить в кеше я получаю следующее исключение:

No converter found capable of converting from type [Package.request.RequestObject] to type [byte[]]

Я не уверен, что является причиной проблемы. Ниже приведена конфигурация Redis, которую я имею:

@Configuration
public class RedisCache extends CachingConfigurerSupport {


    private long timeoutSeconds=200l;

    private long cacheDuration=2l;

    public Map<String, Long> getCacheExpiration() {
        Map<String, Long> cacheExpiration = new HashMap<>();
        cacheExpiration.put("object", TimeUnit.DAYS.toSeconds(cacheDuration));
        cacheExpiration.put("object1", TimeUnit.DAYS.toSeconds(cacheDuration));
        return cacheExpiration;
    }

    private static RedisCacheConfiguration createCacheConfiguration(long timeoutInSeconds) {
        return RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofSeconds(timeoutInSeconds));
    }

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(cf);
        return redisTemplate;
    }

    @Bean
    public RedisCacheConfiguration cacheConfiguration() {
        return createCacheConfiguration(timeoutSeconds);
    }

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();

        for (Entry<String, Long> cacheNameAndTimeout : getCacheExpiration().entrySet()) {
            cacheConfigurations.put(cacheNameAndTimeout.getKey(), createCacheConfiguration(cacheNameAndTimeout.getValue()));
        }

        return RedisCacheManager
                .builder(redisConnectionFactory)
                .cacheDefaults(cacheConfiguration())
                .withInitialCacheConfigurations(cacheConfigurations).build();
    }
}

Любые предложения высоко ценятся и будут полезны!

...