Memcached @cacheable не кеширует
Я использую 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";
}
}
После вызова rest ex: localhost:9000/checkend?Id=7 memcached хранит (7 в качестве ключа, "done1" в качестве значения) и будет извлекать из кэша, когда будет сделан тот же вызов rest..(примечание: он не кэширует результат для метода "testCache" в 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 ответ
Кэширующие аннотации SSM работают только на bean-компонентах Spring, поэтому измените RandomClass на bean-компонент.
Стоит также отметить, что собственные вызовы (через это) не перехватываются / кэшируются.