报错为:
2018-08-10 21:50:38,953-ERROR (com.alicp.jetcache.anno.support.CacheContext:90)- Cache operation aborted because can't find @cached definition
com.alicp.jetcache.CacheConfigException: can't find @cached definition with area=default name=getActivitySkus-, specified in public void com.xxx.xxx.service.activity.imp.CmsActivityServiceImpl.cancelGetActivitySkusCache(int)
at com.alicp.jetcache.anno.support.CacheContext.lambda$createCacheInvokeContext$1(CacheContext.java:89)
at com.alicp.jetcache.anno.method.CacheHandler.invokeWithInvalidateOrUpdate(CacheHandler.java:105)
at com.alicp.jetcache.anno.method.CacheHandler.doInvoke(CacheHandler.java:94)
at com.alicp.jetcache.anno.method.CacheHandler.invoke(CacheHandler.java:84)
at com.alicp.jetcache.anno.aop.JetCacheInterceptor.invoke(JetCacheInterceptor.java:67)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy64.cancelGetActivitySkusCache(Unknown Source)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.docleanActivityCache(InvalidActivityCache.java:42)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.cancelCache(InvalidActivityCache.java:30)
at com.xxx.xxx.service.activity.imp.InvalidActivityCache.cancelCache(InvalidActivityCache.java:15)
at com.xxx.xxx.listener.GoodsMsgListener.onApplicationEvent(GoodsMsgListener.java:59)
at com.xxx.xxx.listener.GoodsMsgListener$$FastClassBySpringCGLIB$$8b193165.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:115)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:745)
2018-08-10 21:50:39,091-ERROR (com.alicp.jetcache.anno.support.CacheContext:90)- Cache operation aborted because can't find @cached definition
引入依赖:
版本号为: 2.4.4
缓存代码为:
@OverRide
@CacheInvalidate(name = "getActivitySkus-", key = "'activityId:'+#activityId")
public void cancelGetActivitySkusCache(int activityId) {
// nothing to do cleanCache
}
@OverRide
@cached(name = "getActivitySkus-", key = "'activityId:'+#activityId")
public List getActivitySkus(int activityId) {
// to do something
return null;
}
@cached的字母C为大写,但是issues这里显示出来为小写。
其中加缓存时缓存生效,redis中有值。失效缓存时,redis值被清除。也就是功能正常,但是一失效缓存时就报错,百思不得解,如果您有时间,请帮我解惑一下,谢谢
6条答案
按热度按时间cvxl0en21#
从你给的信息看配置没有问题。你能通过一个简单的例子重现吗?
版本也升级一下吧。
t3psigkw2#
可能和你用了
@Async
有关,你是在启动过程中调用了@Async
方法吗?s4n0splo3#
谢谢你的回答。
在启动过程中调用了@async方法吗?是的,在服务器启动之后,我是对rocketMq监听到的消息中,用了Spring中@async,在Spring的异步方法中调用了失效缓存的方法。但是我还有一个手动清除缓存的http链接,直接访问该链接是没有使用Spring中@async的,访问该链接后会直接调用清除方法,但是同样报错。
我用它的版本号2.4.4,对应的spring版本是参照jetcache的2.4.4版本依赖的spring版本引入的。请问一下,如果升级,升级到哪个版本比较合适
busg9geu4#
@async
@component
public class GoodsMsgListener {
}
x7rlezfr5#
增加缓存时,不仅功能正常,而且不报错。只有失效缓存时才出现上述错误。给您添麻烦了,请您有空时再帮我看下。
zbdgwd5y6#
我猜调用报错的时候,jetcache还没有初始化完成,可能和异步调用有关。
这个错误看起来是刚启动的时候才会报的,如果跑热之后不再报了,你可以忽略这个错误。这块jetcache本身可能有有待优化的地方,我有空的时候继续看一看。
版本可以升级到最新的2.5.6。
代码要用markdown的形式写,否则你就是在AT别人。