Spring 緩存注解是基於Spring AOP切面,必須走代理才能生效,同類調用或者子類調用父類帶有緩存注解的方法時屬於內部調用,沒有走代理,所以注解不生效。
解決方法:
方式一:將緩存的方法抽離放到一個單獨的類中,然后再在service的實現類中進行調用;
方式二:手動使用CacheManager來獲得緩存效果。
總結:
@Cacheable注解式緩存使用的要點:
1、正確的注解式緩存配置,注解對象為spring管理的hean,
2、調用者為另一個對象。
以下情形注解式緩存是不起作用的:同一個bean內部方法調用,子類調用父類中有緩存注解的方法
原因:因為@Cacheable是基於Spring AOP切面,必須走代理才有效。
轉載地址:http://silenter.cn/64.html