0

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

4

1 回答 1

0

可能术语有点混淆@LearningHuman,拦截器更像是Spring MVC术语,指的是您在调用实际控制器方法之前要采取的行动 - 这里有性能损失,但相比起来往往可以忽略不计以流式数据返回浏览器所涉及的 IO 成本、数据库往返时间为代价。

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

于 2012-06-28T12:00:54.677 回答