@Cacheable(value="name1")
public List get1() {
// 访问数据库
return dao.list();
}
@Cacheable(value="name2")
public List get2() {
List list = get1();
......
return list2;
}
在get2方法中调用get1方法,发现没有用到缓存?
这是为什么?
---------------问题补充---------------
@melnnyy:get1在类以外的地方调用过,并且缓存成功 若在该类里面其他方法中调用get1,则无法用到缓存!!! 不管其他方法是否有缓存注解!!!(4年前)
@melnnyy:<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <diskStore path="E:/" /> <defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="false" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU" /> <cache name="name1" eternal="true" maxElementsInMemory="100" overflowToDisk="false" diskPersistent="false" memoryStoreEvictionPolicy="LRU" /> <cache name="name2" eternal="true" maxElementsInMemory="100" overflowToDisk="false" diskPersistent="false" memoryStoreEvictionPolicy="LRU" /> </ehcache>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Spring Cache基于AOP实现, AOP, 调用Proxy上的方法会被拦截, 缓存会生效, get2中的get1调用是普通的Java调用, 不会调用到Proxy对象上, 因此不会被拦截, 缓存不会生效。