关于论坛缓存的疑问

10-03-11 cmzx3444

jivejdon中缓存的是整个model,但我看了一下ForumMessageService中

	public ForumMessage getMessage(Long messageId) {
		return messageKernel.getMessage(messageId);
	}
<p>

这段代码,ForumMessage 是通过MessageKernel组件调用forumAbstractFactory.getMessage(messageId)

得到的,而上面的方法最终是调用MessageDirector的getMessage方法得到的下面是代码

public ForumMessage getMessage(Long messageId, final ForumThread forumThread, final Forum forum) throws Exception {
		logger.debug(" enter get a full Message for id=" + messageId);
		final ForumMessage forumMessage = (ForumMessage) messageBuilder.create(messageId);
		if (forumMessage == null) {
			logger.error("no this message in database id=" + messageId);
			return null;
		}
		if (forumMessage.isEmbedded())
			return forumMessage;

		// http://www.javalobby.org/forums/thread.jspa?messageID=91836328
		construct(forumMessage, forumThread, forum);
		forumMessage.applyFilters();
		forumMessage.setEmbedded(true);
		return forumMessage;
	}
<p>

他在这里创建了个新的ForumMessage 对象返回的,没有去缓存里拿啊,难道哪里有个aop自动给拦截了然后自动返回了??

[该贴被admin于2010-03-11 15:09修改过]

banq
2010-03-11 15:14

2010年03月11日 15:03 "cmzx3444"的内容
难道哪里有个aop自动给拦截了然后自动返回了??

是的,在JdonFramework的PPT介绍中,需要在ForuMessage领域对象的仓储获取地方加上Annotation:@Introduce(modelCache),然后在具体getXXX方法上加@Around,就能激活AOP自动从缓存中获取,不用写代码,这是6.2版本以后新功能。

通过这种办法,让领域对象从一开始就在内存中,使用缓存机制管理它的内存,这样,我们能实现in-memeory model。

cmzx3444
2010-03-11 16:40

但是ForumMessage领域对象的仓储上好像没这个方法啊

oojdon
2010-03-11 17:14

ForumMessage getMessage(Long messageId);//框架的缓存拦截器拦截了service的get方法
<p>

[该贴被oojdon于2010-03-11 17:15修改过]