Spring Data Redis сохраняет и сериализует объекты сеанса с переопределением сериализатора по умолчанию? - PullRequest
0 голосов
/ 01 марта 2019

Я хочу сохранить объекты в сеансах и сохранить эти сеансы в Redis.Redis использует JdkSerializationRedisSerializer в качестве сериализатора по умолчанию (внутри RedisOperationsSessionRepository):

private RedisSerializer<Object> defaultSerializer = new JdkSerializationRedisSerializer();

Чтобы сделать это, я либо

  • Реализую Serializable во всехобъекты, которые я хотел бы сохранить или
  • Переопределить сериализатор по умолчанию в Redis.

Без этого я получаю сообщение об ошибке: SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type

Как я могу переопределить сериализатор redis? Я не могу найти никаких решений для этого, и приведенное ниже решение, похоже, не работает, так как я не могу ввести один и тот же компонент дважды, он уже введен.

@Bean
    public RedisOperationsSessionRepository sessionRepository(RedisTemplate<Object, Object> redisTemplate)
    {
        RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(redisTemplate);
        sessionRepository.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
        sessionRepository.setDefaultMaxInactiveInterval(300);
        return sessionRepository;
    }

Я использую:

compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-redis', version: '2.1.3.RELEASE'
compile group: 'org.springframework.session', name: 'spring-session-data-redis', version: '2.1.4.RELEASE'
compile group: 'org.springframework.data', name: 'spring-data-redis', version: '2.1.5.RELEASE'
compile group: 'io.lettuce', name: 'lettuce-core', version: '5.1.4.RELEASE'
...