AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网
些内容,但必须 解释 CacheMethodResult 复合键。然而,CacheMethodResult 将自己的范围限 于 方法结果,从而使子方面编写程序可更容易地编写切入点。因此它无法直接缓存 字段值。
有了 CachedItem,Holly 就可以在获取字段、从方法或构造器调用处返回值 时缓存任何内容。但方面没有映射,而是假定切入点可准确地识别值。若编写了 错误的切入点,就会导致两个值相混合。 Holly 非常喜爱缓存方面,但这些方面均要求以手动方式使缓存无效,这让 她 不太满意。Zed 也对此不满。尽管有无缓存,系统都可运行,但只要有依靠缓存 方面清除缓存的地方存在,缓存方面就不可移除。 追求平静的 Irene 实现幂等方法 Irene 不喜欢变化,也不喜欢为之努力抗争。与 Holly 一样,她也希望提高 性能。她希望您能帮助她回避幂等(Idempotent) 方法,若多次使用这些方法 ( 例如,在打开已开放的资源或关闭已关闭的资源时),则不会产生任何效果。您 编写了两个方面,均可跳过已运行的方法。两者在关联方面有所不同,与缓存类 似。 表 5. Idempotent 方法管理方面
这些方面使用各方法上的注释,Buddy 对此感到非常兴奋。Iren 希望将代码 中的方法标识为幂等,以使开发人员得知不应对该属性进行更改。若她在一个切 入点中枚举了方法,则他人可能会更改或重命名方法。有了注释,所有人都会得 到通知,保留其幂等性。系统可在不需任何人更新方面的情况下实现更改,Zed 对此表示满意。 AOP@Work: 使用AspectJ 5检验库方面(8)时间:2011-09-07 IBM Wes IsbergHolly 再寻基于注释的缓存 Holly 依然对缓存方面不够满意,又回来找您。如果缓存项目以期待的生存 期 注释自己,又该怎么办呢?例如,产品描述过时 5 分钟无关紧要,但拍卖价格 必 须准确到分,乃至秒。若缓存方面可读取本信息,就可在指定时期后使自己的缓 存失效。 您告诉她这是可行的。这里有两个标记了其结果生存期的方法: 清单 8. 生存期注释
清单 9 展示了使用注释值确定何时清除缓存的 TimedCacheItem 方面: 清单 9. 在生存期后清除缓存
这个解决方案得到了 Zed 的认同。若方面被移除,缓存也随之清除,但没有 其他任何东西负责使方面缓存失效。此外,最好由方法开发人员去估计缓存期。 所有人看上去都很满意,但 Connor 突然提议实现更高的灵活性。若存在两 个 访问点,则同一个值拥有另外一种不同的生存期是完全可能的。例如,参与拍卖 的人希望为其价格使用短期点,系统管理员则希望使用长期点来计算总和(因为 细微的价格误差不会影响总和)。采取这种方式也就意味着总和通常不会清除缓 存,且会降低系统运行速度。Connor 的提议形如清单 10 所示: 清单 10. 按访问区别的生存期
|
||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |