关于AOP的问题

1。现在有没有建模工具支持AOP?
2。我对AOP了解不多,想请教一下使用过AspectJ的大虾,你们有没有遇到过维护困难的问题?例如某个aspect通过introduction改变了一个类的行为,而类(的开发人员)并不知道,从而做了错误的事情。又或者多个aspect之间并不知晓而产生冲突?
3。有没有开发工具支持对AOP的refactoring?
4. 现在的AOP实现除了AspectJ和Hyper/J之外还有没有别的?

AspectJ其实不算好,有很多AOP 如Nanning Spring dyncAOp都非常不错。

谢谢!还想请教一个问题:
你们说的静态AOP和动态AOP是什么意思?是不是指静态和动态weaving?

您好,
你的理解可以说基本上是对的,动态的AOP和静态的AOP的区分主要是根据他们的实现的方式AspectJ实现是有缺陷主要体现如果做修改和扩展需要重新编译,但是也有一定优势他的性能和稳定性相对好一点.动态的AOP(例如Spring使用JDK的动态代理模式的扩展和CGLIB的两种实现)的优略刚好相反,但是总的来说基本比较好性能和稳定性基本上可以控制的.还有一种介于两者之间被人称为半自动方式---JBOSS的AOP实现,但是它比较特殊我们在自己的应用系统不提倡也比较难实现(因为JOBSS是一个中间件,所以AOP的体系也与中间件技术结合,特别是它对JVM的classloader的管理).

通过introducing 可以实现java的多继承关系,但大部分这种关系都可以通过implements + aop来实现。aop我也只是用来做过事务管理或则权限验证之类比较大的“方面”的应用。如果什么屁都去aop一下,结果可能适得其反。aop还有个锯说是pure java实现的叫AspectWerkz。