Springboot 中 @Cacheable不生效的原因

1.因为@Cacheable 是使用AOP 代理实现的 ,通过创建内部类来代理缓存方法,这样就会导致一个问题,类内部的方法调用类内部的缓存方法不会走代理,不会走代理,就不能正常创建缓存,所以每次都需要去调用数据库。

  // get 方法调用了 stockGive 方法,stockGive 方法使用了缓存
  // 但是每次执行get 方法的时候,缓存都没有生成,也就是缓存没有被创建
  public void get(){
    stockGive(0L);
  }
  @Override
  @Cacheable(value = CacheConfig.COMMON, key = "'stock/give'+#memberId")
  public List> stockGive(Long memberId) {
      // do something
  }
  1. 相关类没有实例化 serialVersionUID
@Getter@Setter
public class Location implements Serializable {

    private static final long serialVersionUID = -6878053406541801993L;
    // do something
}

你可能感兴趣的:(Springboot 中 @Cacheable不生效的原因)