Spring中@Cacheable 缓存失效

pnwazgx 发布于 2015/05/12 10:43
阅读 8K+
收藏 1

在springMVC+Spring +hibernate架构中。service层一个方法a()去调用方法b(Long id),b方法加了@Cacheable 缓存。通过junit测试,直接重复调用b方法缓存是生效的,但是在a方法中去调用b方法就处于失效状态?大家有没有遇到过这种情况?

加载中
0
南湖船老大
南湖船老大
楼主Spring没学好啊。默认嵌套是不行的,基本常识了,这个和AOP的方式有关。 Spring cache是基于动态生成的 proxy 代理机制来对方法的调用进行切面,这里关键点是对象的引用问题,如果对象的方法是内部调用(即 this 引用)而不是外部引用,则会导致 proxy 失效
pnwazgx
pnwazgx
“默认嵌套是不行的”。那嵌套的怎么使用呢?
0
一只小桃子
一只小桃子
没有走代理 , 直接掉b 走代理的,  走a掉b 不通过代理,spring不知道你有注解
pnwazgx
pnwazgx
那要怎么才能在a掉b得时候生效呢
0
南湖船老大
南湖船老大
AOP的实现有两种方式,好好想想这两种方式的区别吧
0
excepiton
excepiton

aspectj 启动的时候动态代码weaver,直接修改字节码。


n
nickel.fang
<cache:annotation-driven key-generator="keyGeneratorService" mode="aspectj"/> 配置成这样,内部调用也不行
0
joock
joock
使用load time weaving
0
小杨阿哥哥
小杨阿哥哥

人工处理缓存,不一定非要用 Spring 的 cache 注解啊,把 CacheManager 注入进来自己 put、 evict

返回顶部
顶部