2012-06-28 118 views
0

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

回答

0

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

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