春季缓存不与Memcached合作
问题描述:
我想让我的Web应用程序使用REST API功能运行并使用Memcached进行缓存。春季缓存不与Memcached合作
Spring在部署应用程序时不会引发错误。但缓存不起作用。我使用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>
这是我实现Cache接口
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;
}
}
我已经使用了可缓存标注在我RestController如下 -
@GetMapping("/courses")
@Cacheable("coursesCache")
public List<Course> getCourses() {
return courseDAO.getAllCourses();
}
我确信Memcached客户端正在创建得很好。否则,我在创建根上下文bean时遇到错误。但是,然后缓存不起作用。任何帮助将不胜感激。