Я пытаюсь запустить мое веб-приложение с функциями API REST и кешированием с помощью Memcached.Spring Caching не работает с Memcached
Весна не выдает ошибки при развертывании приложения. Но кеширование не работает. Я использовал spymemcached Java-клиент наряду с кэшированием Spring. Может кто-нибудь, пожалуйста, скажите мне, где я ошибаюсь? Это фрагмент моего корневого контекста
<cache:annotation-driven />
<bean class="net.spy.memcached.MemcachedClient">
<constructor-arg ref="serverList" type="java.util.List" />
</bean>
<context:component-scan base-package="com.restdemo.cache" />
<util:list id="serverList" value-type="java.net.InetSocketAddress">
<bean class="java.net.InetSocketAddress">
<constructor-arg value="127.0.0.1" type="java.lang.String" />
<constructor-arg value="11211" type="int" />
</bean>
</util:list>
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean name="coursesCache" class="com.restdemo.cache.Memcache">
</bean>
</set>
</property>
</bean>
Это моя реализация интерфейса кэша
public class Memcache implements Cache {
@Autowired
MemcachedClient cache;
private final String name = "";
public void clear() {
cache.flush();
}
public void evict(Object key) {
this.cache.delete(key.toString());
}
public ValueWrapper get(Object key) {
Object value = null;
try {
value = cache.get(key.toString());
} catch (final Exception e) {
e.printStackTrace();
}
if (value == null) {
return null;
}
return new SimpleValueWrapper(value);
}
public <T> T get(Object arg0, Class<T> arg1) {
// TODO Auto-generated method stub
return null;
}
public <T> T get(Object arg0, Callable<T> arg1) {
// TODO Auto-generated method stub
return null;
}
public String getName() {
return name;
}
public Object getNativeCache() {
return cache;
}
public void put(Object key, Object value) {
cache.set(key.toString(), 7 * 24 * 3600, value);
}
public ValueWrapper putIfAbsent(Object arg0, Object arg1) {
// TODO Auto-generated method stub
return null;
}
}
Я использовал аннотацию Cacheable в моем RestController следующим образом-
@GetMapping("/courses")
@Cacheable("coursesCache")
public List<Course> getCourses() {
return courseDAO.getAllCourses();
}
Я уверен, что клиент Memcached создается просто отлично. Else Я получал ошибку, когда были созданы корневые компоненты контекста. Но тогда кеширование не работает. Любая помощь будет оценена.