论坛首页 Java企业应用论坛

aop cache再讨论

浏览 21798 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-11-07  
写的不错,功力有所提升,继续支持
0 请登录后投票
   发表时间:2008-11-07  
看了你之前的有关主页做缓存的说法,想知道一个动态主页如何做缓存呢?我的主页上基本上是一个以当前登录用户为条件收集相关信息的report review页面,比如当前用户待审核item数目,新消息数等,每个人登录以后都不一样,这个如何缓存?
0 请登录后投票
   发表时间:2008-11-08  
我是一个初学者,可不可以多加一点注释呢?最好是一行一个注释!
0 请登录后投票
   发表时间:2008-11-08  
俺只就annotation来提的建议:

@Cache(key="user_{1}_{2}",group="user")
public User findUser(param1,param2);



@Flush(group="user")
public void updateUser();
1 请登录后投票
   发表时间:2008-11-09  
针对mycybyb所讲的数据库被修改的情况缓存应该失效,这是因为具体逻辑只有自己的领域问题才知道,一个通用的缓存是解决不了的。通用的话,要么就在更改动作发生时缓存全体失效以保证正确性,因为通用缓存不知道它到底还关联了其它什么对象,要么就不用缓存。
只有对业务进行深入了解,然后自己手工操控缓存,拿spring注入一个ehcache实例,其它的什么时间存什么时间失效都要自己控制,这个拿着aop的话应该不是问题,问题是很多人都想要个省事的通用缓存。
0 请登录后投票
   发表时间:2008-11-10  
不错不错,我们目前的aop cache正好可以修改修改~~~
0 请登录后投票
   发表时间:2008-11-10   最后修改:2008-11-12
发现代码有点小问题,
invocation.getThis().getClass().getMethod(methodName, classtypes)
这个方法在调用的时候,如果遇到参数是某个接口的具体类型,而方法定义的时候定义的是接口,这样,getMethod就会抛找不到方法的异常.

所以代码换成这样了

Method[] mss = invocation.getThis().getClass().getMethods();
				Method ms = null;
				for (Method m : mss) {
					if (m.getName().equals(methodName)) {
						boolean argMatch = true;
						Class[] tmpCs = m.getParameterTypes();
						if (tmpCs.length != cs.length) {
							//argMatch = false;
							continue;
						}
						for (int k = 0; k < cs.length; k++) {
							if (!cs[k].equals(tmpCs[k])) {
								argMatch = false;
								break;
							}
						}
						
						if (argMatch) {
							ms = m;
							break;
						}
					}
				}
				
				if (ms != null && ms.isAnnotationPresent(MethodCache.class)) {
					MethodCache mc = ms.getAnnotation(MethodCache.class);
					return getResult(targetName, methodName, arguments, invocation, mc.expire());
				} else {
					return invocation.proceed();
				}
0 请登录后投票
   发表时间:2008-11-11  
可能是spring的cache aop 我没看懂,觉得嘿嘿的,我还是自己用aspectj 写 增强,感觉到踏实啊
0 请登录后投票
   发表时间:2008-11-11  
不过用那么多annotations 我看着木木的,还是纯代码看着干净啊
0 请登录后投票
   发表时间:2008-11-12  
好文章, spring确实强大
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics