是否有可能确定哪些方面挂钩到给定的类并获得对其实例的访问?
就像是:
Foo foo = new Foo();
List<Object> aspects = getAllAspectsOf(foo);
Run Code Online (Sandbox Code Playgroud)
首先,您很可能无法使用现有的 Aspect API 进行任何此类监视,因为Aspect 包装器拦截调用的特定目的是不绑定到任何一个特定组件,因此不会有任何自然的方法来检测拦截方面。
也就是说,可能有一种方法可以将各个方面包装在某种策略类中,但是,维护这一点的工作量将非常大。
http://www.eclipse.org/aspectj/doc/released/faq.php#q:好处
方面通常被描述为“位于其他代码之上”或“与其他代码交织在一起”,即在运行时或构建时。
因此,考虑到这种方面实现的范例,您的代码通常不会“意识到”任何此类面向方面的功能。
但是,如果您想要可跟踪的切面,您可以使用标准 java 和依赖项注入来实现一些“类似”切面的功能- 也就是说,通过在运行时加载注入的模块来实现切面将实现的一些横切功能...但是,我怀疑,如果您真的在做严肃的面向方面的代码,那么这种方法将达不到您面向方面的要求。
| 归档时间: |
|
| 查看次数: |
189 次 |
| 最近记录: |