首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring AOP vs AspectJ

Spring AOP vs AspectJ
EN

Stack Overflow用户
提问于 2009-10-22 19:23:39
回答 8查看 82.1K关注 0票数 183

我的印象是Spring AOP最适合用于特定于应用程序的任务,如安全性、日志记录、事务等,因为它使用自定义的Java5注释作为框架。然而,在设计模式方面,AspectJ似乎更加友好。

有人能强调在Spring应用程序中使用Spring AOP和AspectJ的各种优缺点吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-10-22 20:10:01

Spring-AOP的优点

  • 它比AspectJ更容易使用,因为你不需要使用LTW (load-time weaving)或AspectJ编译器。
  • 它使用代理模式和装饰器模式

Spring-AOP缺点

  • 这是基于代理的面向方面编程,所以基本上你只能使用方法--在同一个类中调用另一个方法时不会应用执行overhead.
  • Spring-AOP。
  • 可能会有一些运行时joinpoints.
  • Aspects不能将方面添加到任何不是由

工厂创建的内容中

AspectJ的优点

  • 这支持所有连接点。这意味着你可以做任何事情。
  • 与Spring AOP相比,运行时开销更少。

AspectJ缺点

  • 要小心。检查您的方面是否仅编织为您想要编织的内容。
  • 您需要使用AspectJ编译器执行额外的构建过程,或者必须设置LTW (加载时编织)
票数 250
EN

Stack Overflow用户

发布于 2014-02-16 09:28:02

补充说明:如果在高负载下的性能很重要,那么您将需要比Spring AOP快9-35倍的AspectJ。10 vs vs 355 vs听起来可能不是很多,但我已经看到人们使用了很多方面。价值10K的方面。在这些情况下,您的请求可能涉及数千个方面。在这种情况下,您将向该请求添加ms。

请参阅benchmarks

票数 22
EN

Stack Overflow用户

发布于 2009-10-30 18:01:50

除了其他人所说的--只是换个说法,there are two major differences

  1. One与编织的类型有关。将
  2. 另一个添加到连接点定义。

Spring-AOP:使用dynamic proxy if interface exists or cglib library if direct implementation provided.概念通过代理进行运行时编织

AspectJ:编译时通过AspectJ Java Tools(ajc compiler)编织(如果源代码可用)或编译后编织(使用编译文件)。此外,可以启用Spring的加载时编织-它需要aspectj定义文件并提供灵活性。

编译时编织可以提供性能优势(在某些情况下)以及joinpoint definition in Spring-aop is restricted to method definition only which is not the case for AspectJ.

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1606559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档