不缓存 null
@Cacheable(cacheNames = "user", unless = "#result == null")
#result 代表 方法执行的返回值。
unless 表示 满足条件时,不将结果放入缓存。
注意点
- 被 @Cacheable 注解标记的方法,通常必须是 public 方法。
- 如果一个被 @Cacheable 标记的方法(如 findUserById)在同一个类中被另一个方法直接调用,那么 缓存将不会生效!这是因为 Spring 的 @Cacheable 是通过 AOP(面向切面编程) 实现的,底层默认使用 JDK 动态代理 或 CGLIB 代理。