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是如何实例化的? 的相关文章

  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 创建一个 JSON 对象以在 Spring Boot 测试中发布

    我想编写基本测试来使用 JSON 负载在 users URL 上执行 POST 请求来创建用户 我找不到如何将新对象转换为 JSON 到目前为止有这么多 这显然是错误的 但解释了目的 Test public void createUser
  • 通过浏览器关闭页面时出现 Websocket 错误:“已建立的连接被主机中的软件中止”

    我开发了一个实时通知系统Spring 4 代码可以在 Github 上找到 github com vdenotaris Spring Messaging https github com vdenotaris Spring Messagin
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 在 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