Spring Cache注解+Memcached

jopen 9年前發布 | 57K 次閱讀 緩存服務器 memcached

Spring3.1 Cache注解

依賴jar包:

<!-- simple-spring-memcached -->
    <dependency>
      <groupId>com.google.code.simple-spring-memcached</groupId>
      <artifactId>simple-spring-memcached</artifactId>
      <version>3.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.code.simple-spring-memcached</groupId>
      <artifactId>xmemcached-provider</artifactId>
      <version>3.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.googlecode.xmemcached</groupId>
      <artifactId>xmemcached</artifactId>
      <version>2.0.0</version>
    </dependency>

applicationContext-cache-memcached.xml

<!-- 啟用緩存注解功能,這個是必須的,否則注解不會生效,另外,該注解一定要聲明在spring主配置文件中才會生效 -->
  <cache:annotation-driven cache-manager="cacheManager" />

<!-- spring自己的換管理器,這里定義了兩個緩存位置名稱 ,既注解中的value --> <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> <property name="caches"> <set> <bean class="org.cpframework.core.cache.memcached.MemcachedCache"> <property name="cache" ref="defaultCache"/> </bean> <bean class="org.cpframework.core.cache.memcached.MemcachedCache"> <property name="cache" ref="commonCache"/> </bean> </set> </property> </bean>

<!-- memcached client defaultCache --> <bean name="defaultCache" class="com.google.code.ssm.CacheFactory"> <property name="cacheClientFactory"> <bean class="com.google.code.ssm.providers.xmemcached.MemcacheClientFactoryImpl" /> </property> <property name="addressProvider"> <bean class="com.google.code.ssm.config.DefaultAddressProvider"> <property name="address" value="192.168.xx.xx:11211" /> </bean> </property> <property name="configuration"> <bean class="com.google.code.ssm.providers.CacheConfiguration"> <property name="consistentHashing" value="true" /> </bean> </property> <property name="cacheName" value="default"/>

</bean> <!-- memcached client commonCache --> <bean name="commonCache" class="com.google.code.ssm.CacheFactory"> <property name="cacheClientFactory"> <bean class="com.google.code.ssm.providers.xmemcached.MemcacheClientFactoryImpl" /> </property> <property name="addressProvider"> <bean class="com.google.code.ssm.config.DefaultAddressProvider"> <property name="address" value="192.168.xx.xx:11211" /> </bean> </property> <property name="configuration"> <bean class="com.google.code.ssm.providers.CacheConfiguration"> <property name="consistentHashing" value="true" /> </bean> </property> <property name="cacheName" value="commonCache"/>

</bean></pre>

MemcachedCache.java

package org.cpframework.core.cache.memcached;

import java.util.concurrent.TimeoutException;

import org.springframework.cache.Cache; import org.springframework.cache.support.SimpleValueWrapper;

import com.google.code.ssm.api.format.SerializationType; import com.google.code.ssm.providers.CacheException;

public class MemcachedCache implements Cache{

private com.google.code.ssm.Cache cache;

public com.google.code.ssm.Cache getCache() { return cache; }

public void setCache(com.google.code.ssm.Cache cache) { this.cache = cache; }

@Override public String getName() { // TODO Auto-generated method stub return this.cache.getName(); }

@Override public Object getNativeCache() { // TODO Auto-generated method stub return this.cache; }

@Override public ValueWrapper get(Object key) { // TODO Auto-generated method stub Object object = null; try { object = this.cache.get((String)key, SerializationType.JAVA); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CacheException e) { // TODO Auto-generated catch block e.printStackTrace(); } return (object != null ? new SimpleValueWrapper(object) : null); }

@Override public void put(Object key, Object value) { // TODO Auto-generated method stub try { this.cache.set((String)key, 86400, value, SerializationType.JAVA); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CacheException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

@Override public void evict(Object key) { // TODO Auto-generated method stub try { this.cache.delete((String)key); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CacheException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

@Override public void clear() { // TODO Auto-generated method stub try { this.cache.flush(); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CacheException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

}</pre>
原文  http://hanqunfeng.iteye.com/blog/2175075

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!