1.因为@Cacheable 是使用AOP 代理实现的 ,通过创建内部类来代理缓存方法,这样就会导致一个问题,类内部的方法调用类内部的缓存方法不会走代理,不会走代理,就不能正常创建缓存,所以每次都需要去调用数据库。
// get 方法调用了 stockGive 方法,stockGive 方法使用了缓存
// 但是每次执行get 方法的时候,缓存都没有生成,也就是缓存没有被创建
public void get(){
stockGive(0L);
}
@Override
@Cacheable(value = CacheConfig.COMMON, key = "'stock/give'+#memberId")
public List<Map<String, Object>> stockGive(Long memberId) {
// do something
}
- 相关类没有实例化 serialVersionUID
@Getter@Setter
public class Location implements Serializable {
private static final long serialVersionUID = -6878053406541801993L;
// do something
}