Spring AOP:<context:load-time-weaver> Vs <aop:aspectj-autoproxy> </aop:aspectj-autoproxy> </context:load-time-weaver>

时间:2014-05-07 07:21:31

标签: aspectj spring-aop load-time-weaving

我一直在寻找配置我的API的选项。我发现Spring AOP是分析方法的选项之一。

Spring AOP中有两个选项可用于配置和使用这些方面:

  1. context:load-time-weaver
  2. aop:aspectj-autoproxy
  3. 根据我的理解,第一个选项(load-time-weaver)在加载时执行编织而不创建任何代理对象。第二个选项(aspectj-autoproxy)创建代理对象。我对此是否正确?我相信,代理对象的创建可能会影响性能。不是吗?

    哪个选项最好选择考虑更好的性能?两种方法的优点和缺点是什么?

1 个答案:

答案 0 :(得分:1)

嗯,Narendra,首先是分析软件的分析器。也许你不需要自己编写任何代码。

关于你的问题:我不知道如何配置Spring因为我从不使用它。我是AspectJ用户。但我所知道的是,Spring AOP 总是使用代理(JDK或CGLIB,具体取决于您是否需要代理接口或类)。正如你所说的那样,你可能不希望进行分析。无论您使用编译还是加载时间编织,AspectJ都不需要或使用代理,因此应该更快。如果您还没有在项目中使用Spring,我不会只是为了满足您的分析需求而触摸它。此外,Spring AOP仅适用于Spring Beans,只提供方法拦截,而不是更多。 AspectJ是一个成熟的AOP实现,功能更强大。如果您已经在使用Spring,那么您可以选择在Spring中使用Spring AOP,AspectJ或两者兼而有之。