X

Spring + ehcache不生效的原因

在spring boot下尝试使用ehcache,没有看ecache官方文档,看的是spring的文档和示例,一切都还顺利,遇到过以下问题

  1. 按照教程配置完成,结果在函数上增加之后,根本不生效。
@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方法不能在同一个类里面,否则不生效。。。

把他改到其他的类里面去,就好了。。。。

 

以上是我查了好多资料也没找到原因而踩到的坑,希望你没有遇到

Categories: Spring文档
Tags: EcacheJava
龙安_任天兵: 不忘初心,方得始终!