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";
}
}  

После вызова паузы, например: localhost:9000/checkend?Id=7, memcached сохраняет (7 в качестве ключа, "done1" в качестве значения) и будет извлекаться из кеша при выполнении того же вызова паузы.. (примечание: он не кэширует результат для метода "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 в этом случае не кэшируется?


person Pradeep    schedule 18.11.2015    source источник


Ответы (1)


Кэширующие аннотации SSM работают только с bean-компонентами Spring, поэтому измените RandomClass на bean-компонент.

Также стоит отметить, что самостоятельные вызовы (через this) не перехватываются/кэшируются.

person ragnor    schedule 18.11.2015
comment
Самостоятельные вызовы (через это) кэшируются, если класс, использующий аннотации @Cacheable, проксируется с помощью AspectJ с использованием объединения байт-кода (docs.spring.io/spring/docs/current/spring-framework-reference/). Также см. (документы. spring.io/spring/docs/current/spring-framework-reference/), чтобы понять, почему вызовы этой ссылки на цели НЕ передаются через прокси. - person John Blum; 19.11.2015