我正在使用 Spring 3.0 RC1 中的缓存抽象机制:我设置了字节码(基于 AspectJ)weawing,以便可以将缓存机制应用于从类本身内部调用的方法。值得一提的是,我首先使用的是基于代理的方法:一切正常(因为方法是从另一个对象调用的。)
一旦我切换到 AspectJ(我通过激活 LTW,将正确的 jars 添加到它们的位置 - 一切正常,没有抛出异常),没有缓存发生
有什么建议吗?谢谢你。
==== 稍后编辑 ========
我将日志设置为 org.springframework 的 DEBUG。
如果使用代理模式,我可以清楚地看到消息添加缓存方法 'getLargeAssetContent'.... 其中 getLargeAssetContent 是我的“可缓存”方法...(请参见下文)
如果使用 aspectj 模式,我看不到此消息....每个请求都转到 DAO 层...在缓存工作的情况下,请求在服务层停止。
我做错了什么?我需要 aop.xml 吗?我没有使用 AOP....,所以我还没有 aop.xml。
谢谢您的帮助。
*> *2011-12-12 16:38:55,998 调试 [org.springframework.cache.annotation.AnnotationCacheOperationSource]
(http-127.0.0.1-8080-6) 添加具有属性的可缓存方法“getLargeAssetContent”:[CacheOperation[public com.mycompany.myprj.model.AssetContent com.mycompany.myprj.dao.jcr.AssetDAOImpl.getLargeAssetContent(java.lang .String) 抛出 com.mycompany.myprj.dao.MyPrjPersistenceException] caches=[assets] | 条件='' | key='#nodeId'] 2011-12-12 16:38:56,013 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) 获取资产的内容 (getLargeAssetContent)来自 id=575d8dc0-01be-41e4-85ce-a654fab97fe8 的节点 2011-12-12 16:38:56,092 INFO [com.mycompany.myprj.dao.jcr.AssetDAOImpl] (http-127.0.0.1-8080-6) 返回来自 id=575d8dc0-01be-41e4-85ce-a654fab97fe8 节点的资产内容**
*
//内容现在被缓存 2011-12-12 16:38:57,654 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] (http-127.0.0.1-8080-6) Returning cached instance of singleton bean ' assetsController' 2011-12-12 16:38:57,654 调试 [org.springframework.web.servlet.DispatcherServlet] (http-127.0.0.1-8080-6) [/myprj/asset/get/575d8dc0-的最后修改值01be-41e4-85ce-a654fab97fe8] 是:-1 2011-12-12 16:38:57,654 INFO [com.mycompany.myprj.services.AssetService] (http-127.0.0.1-8080-6) 使用 id 获取资产: 57
*