JBossAOP和AspectJ是AOP的两个常用的成熟框架。另一个流行的选择是Spring AOP,但它缺少其他两个功能。
JBossAOP和AspectJ都具有相似的功能,一个很大的不同是AspectJ依赖于Java语言的扩展,而JBoss AOP则没有。
如果您的AOP要求非常简单,那么也值得考虑使用字节码操作库,例如ASM。我已经使用ASM来实现简单的“周围建议”(即,在方法调用之前和之后注入的代码),并且它被证明是JBossAOP的一种更轻量级的替代品。ASM的设计经过精心设计,并有据可查。