Memcached @cacheable不缓存

时间:2015-11-18 07:11:14

标签: spring-boot memcached spring-cache simple-spring-memcached

我在Spring启动应用程序中使用Simple Spring Memcached(SSM)。我是memcached的新手,我正在努力理解事情。

以下代码

@RestController
public class TestController {


@RequestMapping(value = "/checkend", method = RequestMethod.GET)
@Cacheable(value="defaultCache")
public String checkInteger(int Id){
    RandomClass r = new RandomClass();
    System.out.println("cache miss...");
    return r.testCache("random");
}
}

public class RandomClass {

@Cacheable(value = "defaultCache")
public String testCache(String randomId){
    System.out.println("came here ");
    return "done1";
}
}  

休息后拨打ex:localhost:9000 / checkend?Id = 7个memcached商店 (7为密钥," done1"为值)并且当进行相同的休息调用时将从缓存中检索..(注意:它不会缓存方法的结果" testCache" in RandomClass"为什么?")甚至

@RequestMapping(value = "/checkend", method = RequestMethod.GET)

public String checkInteger(int Id){
    RandomClass r = new RandomClass();
    System.out.println("cache miss...");
    return r.testCache("random");
}
}

public class RandomClass {

@Cacheable(value = "defaultCache")
public String testCache(String randomId){
    System.out.println("came here ");
    return "done1";
}
}  

它不会缓存" testCache"具有给定输入的方法。在这种情况下,RandomClass的方法没有被缓存的原因是什么?

1 个答案:

答案 0 :(得分:2)

SSM缓存注释仅适用于Spring bean,因此将RandomClass更改为bean。

值得一提的是,自我调用(通过 this )不会被截获/缓存。