首页 > 解决方案 > 在 Spring Boot 中自定义 @Cacheble

问题描述

有什么方法@Cacheble可以自定义注释以仅在缓存中存储重新调整对象的某些特定字段。

@Cacheble
public Person getPersonById(String personID);

我想存储 personId 和 personName 并且所有剩余的字段都不应该被缓存。

如何做到这一点?或者任何其他替代方法来探索?

标签: javaspringspring-bootspring-cache

解决方案


您可以在 RedisCacheManager 中指定 jackson 序列化程序。

    @Bean
    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
      
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();

        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        redisCacheConfiguration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));
        RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(redisCacheConfiguration);
        return builder.build();
    }

而杰克逊提供了一些方法来忽略诸如@JsonIgnore这样的字段,以便您可以实现这一点。


推荐阅读