我在我的项目中使用Spring方法拦截器。我想知道引入方法拦截器是否会有可能的性能问题。同时,我的理解是Spring将创建代理并重新定义被拦截的方法,并在每个被拦截的方法中内联拦截器逻辑。在运行时,spring使用代理bean而不是调用bean。所以有了拦截器,创建代理bean本身就需要额外的时间。即使添加了更多的拦截器,也只是在同一个代理bean的方法中添加了更多的方法调用。这种理解是正确的吗?
发布于 2012-06-28 20:00:55
可能术语@LearningHuman有点混淆,拦截器更像是Spring MVC术语,指的是你想要在调用实际控制器方法之前采取的操作-这里有性能损失,但与将数据流回浏览器所涉及的IO成本,数据库往返时间相比,往往可以忽略不计。
我想你指的是Aspects,Spring为每个具有目标切入点的bean创建了一个动态代理,在创建代理的情况下它并不是真正内联调用,所以这是有代价的,但是如果它是在web应用程序的上下文中,IO时间可能会高于任何额外方法调用的代价。如果性能是个问题,您可以将编译时编织与方面结合使用,这至少可以内联对建议的调用。
https://stackoverflow.com/questions/11241896
复制相似问题