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