Spring AOP:使用它时的缺点 – 使用Spring AOP的Spring功能没有这个缺点吗?

我正在使用Spring Framework 3.0.5和Spring Security 3.0.5,我对面向方面的编程有疑问.目前我试图找出面向方面编程的缺点和优点.当然,我在理论上知道它们:我可以避免冗余代码,我只需要在方面进行更改,而不是在代码中的任何地方等等.但我还是有一些问题:

The disadvantage I found out:

我使用Spring AOP的方面编写了一个示例应用程序.我配置了带注释的Aspect(@Pointcut,@ Before,@ Aspect等).触发方面的方法(当然是Pointcut的一部分)当然是不同类的一部分,没有任何注释.

=&GT我真的认为一个很大的缺点是,当观察其他类的那些方法时,不清楚它们是否触发了一个方面.他们不需要注释或其他任何东西,只是在方面的切入点中提到它们. (我真的希望你明白我的意思).所以这就是为什么我认为AOP使代码也不那么容易理解!

a)这个问题有解决方案吗? (当我将整个配置放在XML文件中时,这可能会解决吗?我不这么认为.)

b)当我使用AspectJ而不是Spring AOP时,这个问题是否仍然存在?

Springs Features using Spring AOP: they dont have this disadvantage?

由于Spring AOP是许多Spring功能的一部分(就像声明式事务管理或(可能)Spring Security(?)),我仔细研究了这些功能.我根本找不到任何劣势.

c)让我们以声明式事务管理为例:使用这些注释(@transactional)管理事务非常容易,我真的找不到上面提到的缺点.我可以看到触发特定行为的方法. (所有@transactional方法触发事务行为)也许我误解了一些东西,这不是使用AOP的地方?但是,如果我没有误解这一点,为什么在这里可以看到哪些方法触发方面,为什么不能在上面的例子中看到它?我真的很想知道这个!

谢谢你的回答!

上一篇:关于 Spring AOP (AspectJ) 你该知晓的一切


下一篇:java – ClassLoader不提供’addTransformer(ClassFileTransformer)’方法