spring 快取 @Cacheable 錯誤總結

zj420964597發表於2018-07-12

1.      

NoSuchMethodError:redis.clients.jedis.JedisShardInfo.setTimeout(I)V

Spring結合Jedis,jedis的版本過高。之前為2.9.0,改為低版本就不報錯了

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.5.2</version>

</dependency>

 

2.      

Error creating bean with name'ehcacheManager' defined in class path resource [conf/spring/spring-cache.xml] 

nested exception isjava.NoSuchMethodError:net.sf.ehcheManager......

NoSuchMethodError:沒找到資源,有可能是版本不對,有可能是沒有匯入jar包。若採用maven,需要引入包

 

3.      

Cache註解沒生效

@Cacheable(value = CacheKeys.CACHE_TYEE_REDIS,

key = "T(cache.CacheKeys).CACHE_GAMEKEY+#gameId")

在使用Spring @Cacheable註解的時候,要注意,如果類A的方法f()被標註了@Cacheable註解,那麼當類A的其他方法,例如:f2(),去直接呼叫f()的時候,@Cacheable是不起作用的,原因是@Cacheable是基於Spring AOP代理類,f2()屬於內部方法,直接呼叫f()時,是不走代理的。

解決辦法,把f()提取到其他的service層。

相關文章