• SpringCache 原理、限制


    基本原理

    和 spring 的事务管理类似,spring cache 的关键原理就是 spring AOP,通过 spring AOP,其实现了在方法调用前、调用后获取方法的入参和返回值,进而实现了缓存的逻辑。我们来看一下下面这个图:

    图 2. 原始方法调用图

    图 2. 原始方法调用图

    上图显示,当客户端“Calling code”调用一个普通类 Plain Object 的 foo() 方法的时候,是直接作用在 pojo 类自身对象上的,客户端拥有的是被调用者的直接的引用。

    而 Spring cache 利用了 Spring AOP 的动态代理技术,即当客户端尝试调用 pojo 的 foo()方法的时候,给他的不是 pojo 自身的引用,而是一个动态生成的代理类

    图 3. 动态代理调用图

    图 3. 动态代理调用图如上图所示,这个时候,实际客户端拥有的是一个代理的引用,那么在调用 foo() 方法的时候,会首先调用 proxy 的 foo() 方法,这个时候 proxy 可以整体控制实际的 pojo.foo() 方法的入参和返回值,比如缓存结果,比如直接略过执行实际的 foo() 方法等,都是可以轻松做到的

    限制

    基于上述的原理说明,我们知道其框架存在以下的限制:

    1、内部类之间的调用,缓存注解将起不到任何的作用

    2、方法必须声明为public

    3、注解只能放在方法体上,若是缓存的逻辑颗粒度更加的细小,则不能实现

    4、缓存逻辑简单,不能做更加深入的逻辑判断

  • 相关阅读:
    丁丁杂想
    Tomcat5.5Ubuntu手记之编程
    插入递归引用Identity列的记录
    evolution错误Ubuntu手记之系统配置
    硬盘安装Ubuntu手记
    WAS安装及概念
    丁丁病了『续』
    web.config中配置字符串中特殊字符的处理
    新宝宝睡眠护理全方位【转】
    丁丁病了
  • 原文地址:https://www.cnblogs.com/sunxianbiao/p/12769461.html
Copyright © 2020-2023  润新知