package org.frame.ehcache; import java.io.Serializable; import net.sf.ehcache.Cache; import net.sf.ehcache.Element; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.util.Assert; /** * @Description : 描述 * @author liuq */ public class MethodCacheInterceptor implements MethodInterceptor, InitializingBean { private static final Log logger = LogFactory .getLog(MethodCacheInterceptor.class); private Cache cache; public void setCache(Cache cache) { this.cache = cache; } public MethodCacheInterceptor() { super(); } public Object invoke(MethodInvocation invocation) throws Throwable { String targetName = invocation.getThis().getClass().getName(); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>intercept class : " + targetName); String methodName = invocation.getMethod().getName(); Object[] args = invocation.getArguments(); System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>intercept method : " + methodName+ " || args : " +args); Object[] arguments = invocation.getArguments(); Object result; logger.debug("Find object from cache is " + cache.getName()); String cacheKey = getCacheKey(targetName, methodName, arguments); Element element = cache.get(cacheKey); if (element == null) { logger.debug("Hold up method , Get method result and create cache........!"); result = invocation.proceed(); element = new Element(cacheKey, (Serializable) result); cache.put(element); } return element.getValue(); } private String getCacheKey(String targetName, String methodName,Object[] arguments) { StringBuffer sb = new StringBuffer(); sb.append(targetName).append(".").append(methodName); if ((arguments != null) && (arguments.length != 0)) { for (int i = 0; i < arguments.length; i++) { sb.append(".").append(arguments[i]); } } return sb.toString(); } public void afterPropertiesSet() throws Exception { Assert.notNull(cache,"Need a cache. Please use setCache(Cache) create it."); } }
最近下载更多
kong.yee LV40
2020年7月5日
adolph_jiang LV11
2020年4月28日
gwt爱学习 LV16
2019年5月30日
faith帅军 LV7
2019年5月12日
1812215714 LV8
2019年4月29日
itlaolang LV6
2019年1月18日
adminmwx LV20
2018年12月27日
夕四呀 LV6
2018年12月20日
我一直在笑 LV10
2018年10月12日
pakadp LV4
2018年5月17日
最近浏览更多
iiiiiiixiiiiii LV1
2023年12月31日
Weishenghui LV7
2023年10月20日
he2yong LV11
2022年7月18日
qujianbo LV1
2022年4月27日
isfrand LV4
2022年4月18日
Start1 LV15
2022年3月10日
and123456 LV11
2022年2月11日
ZiruiSong LV7
2022年1月4日
yema2986 LV2
2021年11月18日
putifeishu108 LV7
2021年5月24日