最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cache @Cacheable 緩存在部分Service中不生效的解決辦法

 更新時間:2023年10月02日 08:16:55   作者:StoneWu - 石頭日記  
這篇文章主要介紹了Spring Cache @Cacheable 緩存在部分Service中不生效的解決辦法

1. 背景

最近開發(fā)的項目中,需要大量的使用到緩存以提升性能

其中,有個活動controller,需要查詢所有的活動,代碼如下:

@GetMapping("/list")
public RestResult<List<ActivityInfoDTO>> list() {
    List<ActivityInfoDTO> list = activityService.getAllActivity();
    return addRestResult(list);
}

對應(yīng)的ActivityService方法如下:

@Override
@Cacheable(value = "ActivityInfoDTO", key = "'getAllActivity'")
public List<ActivityInfoDTO> getAllActivity() {
    List<ActivityInfoDTO> allActivity = activityDefMapper.getAllActivity();
    return allActivity;
}

結(jié)構(gòu)十分簡單,但是奇怪的是,ActivityService里的方法完全不會走緩存

而另一個service,BannerInfoService則可以正常緩存

調(diào)試時可以看到,正常的BannerInfoService是有被cglib代理的

而ActivityService是沒有被代理的

2. 解決方法

漫長的搜索過后,沒能在網(wǎng)上找到解決方案

最終將目光瞄向了ActivityService的其他引用,于是猜測是否是循環(huán)引用導(dǎo)致ActivityService沒有被代理

結(jié)果發(fā)現(xiàn),在另一個OpusService中,有引用該ActivityService

同時OpusService也引用了MessagePushService,而這個MessagePushService又引用了OpusService

于是選擇將OpusService中的ActivityService改為懶加載,加上@Lazy注解:

發(fā)現(xiàn)成功觸發(fā)了緩存機制,調(diào)試信息也可以看到被cglib代理

3. 總結(jié)

之前遇到的緩存不生效大多都是因為在類內(nèi)部通過this進行調(diào)用

這次遇到的情況確實不太常見,循環(huán)依賴會導(dǎo)致cglib無法成功代理被依賴的對象,導(dǎo)致緩存失效。

到此這篇關(guān)于Spring Cache @Cacheable 緩存在部分Service中不生效的解決辦法的文章就介紹到這了,更多相關(guān)Spring Cache @Cacheable 緩存在部分Service中失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

桦川县| 沛县| 通辽市| 无极县| 莲花县| 易门县| 鸡西市| 台南县| 长汀县| 繁峙县| 鹿邑县| 南昌县| 江口县| 滕州市| 永仁县| 长泰县| 闵行区| 名山县| 上栗县| 云林县| 垣曲县| 文山县| 汨罗市| 图木舒克市| 威信县| 哈密市| 宜川县| 南溪县| 广河县| 大石桥市| 万源市| 金堂县| 绥滨县| 科尔| 湄潭县| 上杭县| 班玛县| 灌云县| 林芝县| 张家口市| 三门峡市|