使用Spring-Cache的两条限制

Spring-Cache的注解实现原理是Spring AOP,而Spring AOP的默认模式是代理(mode="proxy"),所以注定了以下两条限制:
基于注解的缓存仅适用于public方法
基于注解的缓存仅适用于Bean的外部调用,即某bean的methord1 调用自身的methord2时,缓存不会生效
如果要解决上述限制,考虑Spring AOP配置为AspectJ的方式(mode="aspectj").


Method visibility and cache annotations
When using proxies, you should apply the cache annotations only to methods with public visibility. 
If you do annotate protected, private or package-visible methods with these annotations, no error is raised, 
but the annotated method does not exhibit the configured caching settings. 
Consider the use of AspectJ (see below) if you need to annotate non-public methods as it changes the bytecode itself.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章