在spring boot下尝试使用ehcache,没有看ecache官方文档,看的是spring的文档和示例,一切都还顺利,遇到过以下问题
- 按照教程配置完成,结果在函数上增加之后,根本不生效。
@Cacheable(cacheNames="tesla-cache", key="'diamond' + #group + #key")
每一次都会执行方法上面的内容。为什么呢?
你需要在你的main方法入口的地方,增加@EnableCaching......
2. 在一个方法上申明了
@Cacheable(cacheNames="tesla-cache", key="'diamond' + #group + #key") public getcontent(String group, String key) { return key+group; if (something update) { updateConfig(group, key,content); } }
然后在另一个方法上设置更新缓存
@Cacheput(cacheNames="tesla-cache", key="'diamond' + #group + #key") private updateConfig(String group, String key, String content) { return content; }
又是死活不生效,改成@CacheEvict也不行,搞了好久发现了这个:
http://stackoverflow.com/questions/10343885/spring-3-1-cacheable-method-still-executed/10347208#10347208
In proxy mode (which is the default), only external method calls coming in through the proxy are intercepted. This means that self-invocation, in effect, a method within the target object calling another method of the target object, will not lead to an actual caching at runtime even if the invoked method is marked with @Cacheable - considering using the aspectj mode in this case.
第一、方法必须是public
第二、你的updateConfig方法不能在同一个类里面,否则不生效。。。
把他改到其他的类里面去,就好了。。。。
以上是我查了好多资料也没找到原因而踩到的坑,希望你没有遇到