java - 在 Spring Boot 中自定义 @Cacheble
问题描述
有什么方法@Cacheble
可以自定义注释以仅在缓存中存储重新调整对象的某些特定字段。
@Cacheble
public Person getPersonById(String personID);
我想存储 personId 和 personName 并且所有剩余的字段都不应该被缓存。
如何做到这一点?或者任何其他替代方法来探索?
解决方案
您可以在 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
这样的字段,以便您可以实现这一点。
推荐阅读
- maven - Spring Boot 应用程序:- 无法解析导入 org.springframework.boot.SpringApplication
- r - 整洁:创建没有 rowwise() 的键?
- microsoft-graph-api - Microsoft Graph API 不断返回 401 Unauthorized
- c# - 我可以在离线场景中为 xml 文件使用什么加密解决方案?
- image - 在 Azure 存储中的文件的源元素中发送文件
- android - 使用 Outlook 成功登录,但成功登录后重定向 URL 不起作用 - 反应原生
- c# - ASP.NET MVC 检查 If 语句的模型是否发生变化
- kotlin - 如何使协程从外部调用按顺序运行
- git - 如何获取 git 标签的总数
- c# - SQLKata - Where 子句