1.因?yàn)锧Cacheable 是使用AOP 代理實(shí)現(xiàn)的 ,通過(guò)創(chuàng)建內(nèi)部類來(lái)代理緩存方法,這樣就會(huì)導(dǎo)致一個(gè)問(wèn)題,類內(nèi)部的方法調(diào)用類內(nèi)部的緩存方法不會(huì)走代理,不會(huì)走代理,就不能正常創(chuàng)建緩存,所以每次都需要去調(diào)用數(shù)據(jù)庫(kù)。
// get 方法調(diào)用了 stockGive 方法,stockGive 方法使用了緩存
// 但是每次執(zhí)行g(shù)et 方法的時(shí)候,緩存都沒(méi)有生成,也就是緩存沒(méi)有被創(chuàng)建
public void get(){
stockGive(0L);
}
@Override
@Cacheable(value = CacheConfig.COMMON, key = "'stock/give'+#memberId")
public List<Map<String, Object>> stockGive(Long memberId) {
// do something
}
- 相關(guān)類沒(méi)有實(shí)例化 serialVersionUID
@Getter@Setter
public class Location implements Serializable {
private static final long serialVersionUID = -6878053406541801993L;
// do something
}