Spring方法拦截 - 性能

时间:2012-06-28 09:40:47

标签: spring

我在项目中使用Spring方法拦截器。我想知道通过引入方法拦截器是否会出现可能的性能问题。同时,我的理解是Spring将创建代理并重新定义截获的方法,并在每个截获的方法中内联拦截器逻辑。在运行时,sp​​ring使用代理bean,而不是调用bean。因此,使用拦截器,创建代理bean本身需要额外的时间。即使添加了更多的拦截器,也需要在同一个代理bean的方法中添加更多的方法调用。这种理解是否正确?

1 个答案:

答案 0 :(得分:0)

可能这个术语与@LearningHuman有点混淆,拦截器更多的是一个Spring MVC术语,并且是指在调用实际控制器方法之前你想要采取的动作 - 这里有一个性能损失,但倾向于与将数据流回浏览器所涉及的IO成本相比,数据库往返时间可以忽略不计。

我认为你指的是Aspects,其中Spring为每个具有目标切入点的bean创建了一个动态代理,但是在创建代理的情况下,它并没有真正嵌入调用,所以有一个惩罚,但如果它是在Web应用程序的上下文中,IO时间可能会高于任何其他方法调用的惩罚。 如果性能是一个问题,你可以使用Aspects进行编译时编织,这可以内联对建议的调用至少。