Redis - 如何配置自定义转换

2023-11-21

在 spring-data-redis 中,我们如何需要配置可以从 Spring boot 应用程序或配置自动连接/注入的自定义转换器。

我读到@ReadingConverter and @WritingConverter来自 Spring Data Redis 文档。从这个文档来看,并不清楚如何配置它们。https://github.com/spring-projects/spring-data-redis/blob/master/src/main/asciidoc/reference/redis-repositories.adoc#redis.repositories.indexes

有谁知道该怎么做?


测试用spring-boot-starter-data-redis:2.0.4.RELEASE.

我面临一个问题,我的OffsetDateTime我的属性@RedisHash使用时未存储实体CrudRepository.

问题是Jsr310Converters没有转换器OffsetDateTime.

为了解决这个问题,我创建了一个阅读转换器:

@Component
@ReadingConverter
public class BytesToOffsetDateTimeConverter implements Converter<byte[], OffsetDateTime> {
    @Override
    public OffsetDateTime convert(final byte[] source) {
        return OffsetDateTime.parse(new String(source), DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    }
}

和写入转换器:

@Component
@WritingConverter
public class OffsetDateTimeToBytesConverter implements Converter<OffsetDateTime, byte[]> {
    @Override
    public byte[] convert(final OffsetDateTime source) {
        return source.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME).getBytes();
    }
}

并注册了一个RedisCustomConversions配置中的bean:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.convert.RedisCustomConversions;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;

import java.util.Arrays;

@Configuration
@EnableRedisRepositories
public class RedisConfiguration {

    @Bean
    public RedisCustomConversions redisCustomConversions(OffsetDateTimeToBytesConverter offsetToBytes,
                                                         BytesToOffsetDateTimeConverter bytesToOffset) {
        return new RedisCustomConversions(Arrays.asList(offsetToBytes, bytesToOffset));
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis - 如何配置自定义转换 的相关文章

随机推荐