Spring HandlerInterceptors是如何实例化的?

2023-11-27

每个请求是否都有一个新的 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字段将被所有请求共享。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring HandlerInterceptors是如何实例化的? 的相关文章

随机推荐

  • 在 Xamarin.Forms 中自定义进度栏外观

    I used Drawable自定义渲染ProgressBar in Android正如对这个问题但该解决方案不适用于 iOS Below is how it renders in Android Below is how it rende
  • WIX,Dot Net 管理的自定义操作,使用 SQL Server 实例动态填充组合框,MSI

    在 WIX 中 我需要一个点网管理的自定义代码来动态填充该网络中 sql server 实例的值的组合框 我尝试用谷歌搜索但没有任何效果 任何帮助是极大的赞赏 CustomAction public static ActionResult
  • 未找到 Gradle DSL 方法:“compile()”

    我有这个梯度错误 错误 9 0 未找到 Gradle DSL 方法 compile 我曾尝试参考类似的问题 但没有成功 Android gradle 构建错误 9 0 未找到 Gradle DSL 方法 compile 同步 Build G
  • 为什么在 C++0x 中没有为 std::weak_ptr 定义 std::hash ?

    在阅读了关于 std weak ptr 的 operator 编辑 关于 std weak ptr 的运算符http www open std org jtc1 sc22 wg21 docs papers 2004 n1590 html 我
  • AngularJS:如何监听 DOM 事件?

    我是 AngularJS 的新手 所以请原谅我这个转储问题 如何监听 dom 事件 例如 click 或 mousemove 这就是我得到的 没有错误 但控制台中也没有结果 代码基于原始的 angularjs seed angular mo
  • 超类访问检查失败:类 com.sun.javafx.sg.prism.web.NGWebView

    我刚刚安装了 SDK 11 并使用了 Maven 中的 Javafx 我的 pom 如下
  • 强制 CMake 使用静态库

    无耻地从 CMake 帮助列表中交叉发布 我正在尝试尽可能静态地创建二进制文件 我得到的 Fortran 代码有 X11 和quadmath 作为依赖项 并且我遇到了许多问题 也许每个问题都应该在不同的问题中 我的变量目前是 set CMA
  • 如何以编程方式更改屏幕保护程序?

    我想使用 C 将当前屏幕保护程序更改为自定义屏幕保护程序 我之前将其作为 Visual Studio 中的资源加载 怎么可能呢 我在谷歌和SO上寻找过它 但它都是关于 如何创建屏幕保护程序 而不是 如何更改屏幕保护程序 如果可能的话 它应该
  • 将 3x1 或 1x3 cv::Mat 转换为 cv::Point3d?

    我正在处理一些代码 其中执行大量 3x3 矩阵乘法 还使用旋转矩阵对 3d 点进行一些转换等 我决定使用 OpenCV 核心功能进行数学运算 使用最近添加到的构造函数的可能性cv Mat类来转换cv Point3d直接到 3x1cv Mat
  • Mongodb 模式,具有唯一值的字符串数组

    我正在为 mongo 文档创建模式 除了防止非对象数组中的重复之外 我可以做所有事情 我知道 addToSet 但我指的是 Mongo Schema 我不想使用 addToSet 检查更新 而是希望这是我的架构验证的一部分 下面的例子 le
  • 使用 MyBatis 将集合持久保存在对象中

    我有 POJO 课程 class Ticket private int id private double cost private Date time private List
  • 以编程方式更改 PowerShell 控制台字体

    我开发了一个使用 PowerShell 充当基于控制台的应用程序 例如 ncurses 的脚本 字体露西达控制台在脚本的快捷方式中配置 我想为用户提供更改字体大小的能力 以下模块就是这样做的 但是字体始终重置为 光栅字体 https 4sy
  • Ajax.ActionLink 与 mvc 核心的替代方案

    在MVC5中有 Ajax ActionLink这对于仅更新部分视图而不是重新加载整个视图很有用 显然在 MVC6 中不再支持 我尝试过使用 Html ActionLink如下所示 但它不会更新表单 它仅返回部分视图 View Html Ac
  • 模板类中对友元函数的未定义引用

    以下代码位于Heap h文件中 template
  • 攻击者可以有害地使用检查元素吗?

    我知道这是一个广泛的问题 但我认为我在这里遗漏了一些东西 攻击者是否可以通过简单地使用检查元素并编辑 javascript 和 html 来对站点造成损坏 例如 对于某人来说 更改输入的最大长度并上传太多数据可能会导致服务器崩溃 这似乎太容
  • C# 中的数组大小(长度)

    如何在 C 中确定数组的大小 长度 项目数 如果是一维数组a a Length 将给出的元素数量a If b是一个矩形多维数组 例如 int b new int 3 5 b Rank 将给出维数 2 和 b GetLength dimens
  • 多处理函数上的超时装饰器

    我有这个装饰器直接取自我在网上找到的一个例子 class TimedOutExc Exception pass def timeout timeout def decorate f def handler signum frame rais
  • 如何从 Azure DevOps 部署到 AWS Kubernetes

    我使用 Azure DevOps 来处理 PBI 存储库 PRS 和构建 但我的所有基础设施 包括 Kubernetes 均由 AWS 管理 没有文档 也没有关于如何使用 Azure DevOps 任务部署到 AWS EKS 的 正确且简单
  • 翻译动画的工作原理:Android

    我正在尝试移动一个RelativeLayout using TranslateAnimation 我为执行相同操作而编写的代码是 translateAnimation new TranslateAnimation 0 0 heightOfR
  • Spring HandlerInterceptors是如何实例化的?

    每个请求是否都有一个新的 Spring HandlerInterceptors 实例 我在 Spring 中有一个拦截器 它有一个类字段 public class MyInterceptor extends HandlerIntercept