我的印象是Spring AOP最适合用于特定于应用程序的任务,如安全性、日志记录、事务等,因为它使用自定义的Java5注释作为框架。然而,在设计模式方面,AspectJ似乎更加友好。
有人能强调在Spring应用程序中使用Spring AOP和AspectJ的各种优缺点吗?
发布于 2018-01-26 05:47:31
重要的是要考虑你的方面是否是任务关键型的,以及你的代码被部署在哪里。Spring AOP将意味着您依赖于加载时编织。这可能会失败,在我的经验中,这意味着可能存在记录的错误,但不会阻止应用程序在没有方面代码的情况下运行[我要补充说明的是,可以以一种不是这种情况的方式配置它;但我个人没有意识到这一点]。编译时编织避免了这一点。
此外,如果您将AspectJ与aspectj-maven-plugin结合使用,那么您就能够在CI环境中针对您的方面运行单元测试,并确信构建的工件已经过测试并正确编织。虽然您肯定可以编写Spring驱动的单元测试,但您仍然不能保证在LTW失败的情况下部署的代码将是经过测试的代码。
另一个注意事项是,您是否在能够直接监控服务器/应用程序启动成功或失败的环境中托管应用程序,或者是否在不受您监管的环境中部署应用程序,例如,在客户端托管的环境中。同样,这将为编译时间编织指明方向。
五年前,我更喜欢Spring配置的AOP,原因很简单,因为它更容易使用,而且不太可能消耗我的IDE。然而,随着计算能力和可用内存的增加,这已经不是什么问题了,基于我上面概述的原因,带有aspectj-maven-plugin的CTW已经成为我工作环境中更好的选择。
https://stackoverflow.com/questions/1606559
复制相似问题