AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口 - 编程入门网
、 线程安全、安全性等方面。
3. 利用为其他目的而存在的注释 方面可以利用服务于不同目的的元数据注释。例如,Enterprise JavaBeans (EJB) 3.0 注释允许您基于与事务、安全性和方法角色编写切入点(即 remove、 init 等)。Hibernate 注释允许您基于表、列名和关系信息编写切入点。而 Eclipse Metadata Framework (EMF) 允许您基于类之间的关系(如复合、联合、 基数等)编写切入点。 AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口(7)时间:2011-09-04 IBM Ramnivas Laddad4. 使用抽象注释类型 如果在仔细分析要求后,确定使用注释是最好的选择,那么如何使用它们呢? 理想情况是,注释类型应当表示程序元素的抽象功能,而不是它们预期的消费。 这种考虑和实现避免了下面讨论的遗忘损失(loss of obliviousness),因为元 素只是提供有关它们自己的额外信息,没有意识到那些方面。例如,如果将 @ReadOperation 和 @WriteOperation 看作扩展的签名,那么类就可以保持对读 写锁定模式的实现的遗忘。 考虑清单 4 中已实现的基本方面,它遵守了前面讨论的使用方面继承的准则 。(如果需要关于 perthis() 方面的信息,请参阅 参考资料,这里的重点是定 义切入点。) 清单 4. ReadWriteLockSynchronizationAspect 的基本方面
清单 5 显示了银行系统的 ReadWriteLockSynchronizationAspect 方面的、 元数据驱动的子方面。 清单 5. 并发管理子方面
注意,并不是简单地在所有 read 和 write 操作外面加上锁,因为不是所有 类都需要这种并发控制机制。也不应该让类指出它们的操作是否要用锁管理,因 为所选择的类将取决于应用程序对这些类的使用。(这种实现可能要对 Java 标 准库中新的集合类的线程不安全性负责。)在上面的例子中, lockManagedExecution() 切入点选择了需要用锁管理的连接点子集。 AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口(8)时间:2011-09-04 IBM Ramnivas Laddad抽象注释类型的能力 有了描述功能的抽象注释后,就可以用同样的注释实现其他关注点。例如,可 以使用 @ReadOperation 和 @WriteOperation 进行脏跟踪和脏缓冲(dirty tracking and caching)。甚至可以编写加强的方面来确保读操作的控制流中不 会调用对同一对象的写操作! 如果使用 @ReadLock 和 @WriteLock 注释类型“标记”需要用锁管理的方法 ,那么这个类会与锁管理功能紧密耦合。而且,将同一个注释用于其他目的很容 易出错,因为注释将要额外考虑特定的关注点,而不 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |