2016-11-15 6 views
0

私は、REST APIの機能とMemcachedを使ったキャッシングでWebアプリケーションを実行しようとしています。SpringキャッシングがMemcachedで動作しない

アプリケーションのデプロイ中にSpringでエラーが発生することはありません。しかし、キャッシングは機能しません。 Springキャッシングと一緒にspymemcached Javaクライアントを使用しました。 誰かが間違っている場所を教えてもらえますか? これはこれは私がfollows-

@GetMapping("/courses") 
@Cacheable("coursesCache") 
public List<Course> getCourses() { 
    return courseDAO.getAllCourses(); 
} 

として私RestControllerでキャッシュ可能アノテーションを使用しているキャッシュ・インタフェース

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

の私の実装である私のルートコンテキストのスニペット

<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> 

です私はMemcachedクライアントがうまく作成されていると確信しています。それ以外の場合は、ルートコンテキストBeanが作成されたときにエラーが発生していました。しかし、キャッシュは機能していません。どんな助けもありがとう。

答えて

0

すでにmemcached(spymemcachedまたはxmemcached)とSpringキャッシュの抽象化を統合したソリューションがあります。Simple Spring Memcached。それを使うことを検討してください。

関連する問題