gpt4 book ai didi

java - Spring HandlerInterceptors 是如何实例化的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:02 24 4
gpt4 key购买 nike

每个请求是否有一个新的 Spring HandlerInterceptors 实例?

我在 Spring 中有一个拦截器,它有一个类字段。

public class MyInterceptor extends HandlerInterceptorAdapter {
Private boolean state = false;

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
state = true;
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
if (state == true) {
System.out.println("Success");
}
}

如果使用这个拦截器,它会一直打印“成功”吗? (不管有多少线程同时在做这件事?)

最佳答案

拦截器如何实例化取决于您如何将其配置为 bean。如果您没有明确指定该 bean 的范围,那么它将像任何其他 bean 一样是单例,因此 state 字段将由所有请求共享。

从这个意义上说,拦截器与 Controller 没有什么不同 - 在将对话状态放入其中时要非常小心,因为对象将在请求之间共享。

如果你真的需要一个有状态的拦截器并且你不想在请求之间共享状态,那么使用 r equest-scoped bean .

关于java - Spring HandlerInterceptors 是如何实例化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7201728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com