Spring Cache如何简化和优化?-灵析社区

办公室高手

### 关于spring缓存的问题: ![c1cfcce2dfe27824305d245b228613c.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/6a6352e88557eaee0aacb4648523d77e.png) ![e0d7898d75f80be3e2ff5ccc5fa86de.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/67376c3488d5d6be3b2eba456f36951e.png) 1. 类似我通过注解方式定义的缓存,我定义了设置缓存,获取缓存、删除缓存三个方法,但我感觉其中设置、删除缓存方法都很奇怪,设置缓存居然要提供返回值才能实际设置;删除缓存又是一个空的方法体。缓存是通过这种方式使用的吗?我感觉很奇怪 2. 我在 application.yml 中配置了缓存的 cache-names;然后使用 @Cachable 注解IDE还是会提示要提供 name,有办法取消这种警告吗 3. 上面获取缓存的值的方法我感觉有点复杂;先获取cache;在获取值的包装类,在获取值,而且每一步都要检查是否为null好麻烦,有更简便的做法吗 无

阅读量:212

点赞量:0

问AI
* 第一个问题,"spring cache" 实现如此,怪也得按格式写。 * 第二个问题,可以给缓存类用 "@CacheConfig(cacheNames = "test")" 对此类统一设置来替代在"application.yml"配置文件中配置,以解决"IDE"的警告;但一般不推荐这么做,因为一个缓存类下要定义多个缓存的时候就不合适了,一般是要在缓存类的每个缓存方法("@Cacheable/@CachePut/@CacheEvict")中定义(还因为缓存一般要实现过期时间)。 * 第三个问题,代码用法不对。取缓存的值仅调用 "@Cacheable" 注解的方法就行。有缓存值会返回值,无缓存值会执行方法体。当然在无缓存值的时候也会将返回值写入缓存,如果不希望写入缓存,可以用 "@Cacheable(cacheNames = "test", key = "#id", unless = "#result == 0")" 类似这种通过 "unless" 指明无缓存时不缓存的判断条件。