Spring 5 WebFlux 中的拦截器

2023-11-27

我在用Spring WebFlux在我的项目中。我想创建一个拦截器来计算每个 API 所花费的时间。在Spring MVC我们有HandlerInterceptor不存在于spring-boot-starter-webflux。我尝试添加spring-boot-starter-web并编写了我的拦截器,但它不起作用。这是代码:

@Component
public class TimeInterceptor implements HandlerInterceptor {

public static Logger logger = Logger.getLogger(TimeInterceptor.class);

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    long startTime = System.currentTimeMillis();
    request.setAttribute("startTime", startTime);
    return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    long totaltime = System.currentTimeMillis() - (long) request.getAttribute("startTime");
    request.setAttribute("totaltime", totaltime);
    logger.info("Logging total time" + totaltime);

}
...
...

我想向我的应用程序添加类似的功能并拦截每次调用所花费的时间。

提前致谢。


如果您想在请求开始和完成时处理请求,可以使用网页过滤器.

尝试这样的事情

@Component
public class CustomWebFilter implements WebFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
        long startTime = System.currentTimeMillis();
        return chain.filter(exchange).doFinally(signalType -> {
            long totalTime = System.currentTimeMillis() - startTime;
            exchange.getAttributes().put("totalTime", totalTime);
            System.out.println(totalTime);
        });
    }
}

当请求处理开始时,所有定义的过滤器都会被调用。单声道从过滤器返回。它指示请求处理何时完成。

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

Spring 5 WebFlux 中的拦截器 的相关文章

随机推荐

  • Django:覆盖 get_FOO_display()

    一般来说 我不熟悉 python 重写方法和使用 super 的方式 问题是 我可以覆盖get FOO display class A models Model unit models IntegerField choices someth
  • render_to_string 和 response.content.decode() 不匹配

    我正在写我的第一个Django跟随本书一起学习应用程序 http chimera labs oreilly com books 1234000000754 ch05 html passing python variables to be r
  • .htaccess 拒绝所有人不起作用

    我的问题是我想拒绝对文件夹的访问 但我不能 我已经放了一个 htaccess此文件夹中的文件仅包含以下几行 order deny allow deny from all 知道会发生什么吗 我得到它 这是由于 apache 配置造成的 在我的
  • 解决日期时间许可证问题的最佳方法[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 目前我们正在开发一个基于 Windows 的小型应用程序 我们曾经提供为期30天的试用版许可证 30天到期后 该产品将无法使用 现在这是我的问题 想象一下 客户于 1 月 1 日
  • Codeigniter - 会话过期和“记住我”功能

    我正在 Codeigniter 中构建 记住我 功能 通常我会看到库 项目使用令牌在用户上设置 cookie 该令牌会保存在数据库中 并在用户每次访问网站时进行比较 在 Codeigniter 中 我们可以设置会话过期时间 这导致我尝试不同
  • 为什么 System.arraycopy 是 Java 原生的?

    我很惊讶地在 Java 源代码中看到 System arraycopy 是一个本机方法 当然原因是因为它更快 但是代码能够使用哪些本地技巧来使其速度更快呢 为什么不直接循环原始数组并将每个指针复制到新数组 当然这不是那么慢和麻烦 在本机代码
  • Firebase 管理多个身份验证提供商

    我正在开发 Android 应用程序 该应用程序在 Facebook Google 和电子邮件 密码等 Firebase 的帮助下使用多重身份验证 每个身份验证都以不同的方式运作良好 但是 当我使用 google 登录然后注销时 以及稍后当
  • 使用 python 定义 chromedriver selenium 的下载目录

    一切都在标题中 有没有办法定义与 python 一起使用的 selenium chromedriver 的下载目录 尽管进行了很多研究 但我还没有找到结论性的东西 作为一个新手 我已经看到了很多关于 Chromedriver 的 所需功能
  • WPF TabControl 在 SelectionChanged 上,将焦点设置到文本字段

    我有一个选项卡控件和一些选项卡项 我正在成功收听SelectionChanged事件 并检查我感兴趣的选项卡是否是当前选定的选项卡 我正在使用这段代码 如下 并单步执行调试器 我可以看到我的分支逻辑按设计工作 但是 我遇到的问题是有些东西覆
  • ElasticSearch Java 客户端查询嵌套对象

    我如何转换这种查询 query nested path consultations query bool must match consultations prescriptions alfuorism match consultation
  • 在列表视图中滚动地图时如何避免滚动列表视图

    我有一个 ListView 在其顶部有一个地图 我希望当 ListView 滚动时地图滚动到视图之外 但我也希望用户能够与地图交互 因此 滚动应该仅在用户在其他 ListView 小部件上滚动时发生 而不是在他们在地图上滚动时发生 然后我希
  • 如何在运行时将字符串转换为代码

    我正在生成包含的字符串if else表达式 我想知道我是否可以在运行时执行这个表达式 这是一个例子 string s if x gt 10 Fly true else Fly False Execute s 有可能做到这一点吗 可以使用TC
  • Spring MVC 3 中的 Restful 路径参数

    是否可以 在 servlet xml 文件的 mvc view controller 元素或控制器方法中设置 URI 模板 然后使用 获取该路径参数in a jsp 我知道在控制器方法中使用 PathVariable 将使我能够访问路径参数
  • 事件的异常处理

    如果这是一个简单的问题 我深表歉意 我的 Google Fu 今天可能很糟糕 想象一下这个 WinForms 应用程序 它具有这种类型的设计 主应用程序 gt 显示一个对话框 gt 第一个对话框可以显示另一个对话框 两个对话框都有确定 取消
  • 什么是符号表?

    有人可以描述一下 C 和 C 上下文中的符号表是什么吗 这里的符号表有两个常见且相关的含义 首先 目标文件中有符号表 通常 C 或 C 编译器将单个源文件编译为扩展名为 obj 或 o 的目标文件 它包含链接器可以将其处理为工作应用程序或共
  • 通过 JSONP 访问 Cookie

    我有一个页面domain com发出 JSONP ajax 请求 使用 jQuery 的 getJSON 函数 到 URL 中anotherdomain com 我认为 阅读 假设 资源anotherdomain com可以在服务器端访问该
  • Drive API共享RateLimitExceeded错误

    我们有一个应用程序 可以使用 Drive API 管理 Google Drive 文件和文件夹的共享权限 当我们的应用程序尝试更新某些文件或文件夹的共享设置时 我们会收到 sharingRateLimitExceeded 错误 Caused
  • CSS/JavaScript 中的多列垂直滚动

    目前 有没有办法在 CSS 或 CSS with JavaScript 中进行多列滚动 为了描述我的意思 我在 jsfiddle 上设置了一个快速演示 http jsfiddle net S7AGp 当 div 中有太多文本时 我希望能够垂
  • MySQL SELECT DISTINCT 多列

    假设我有专栏a b c d在 MySQL 数据库的表中 我想要做的是选择表中所有这 4 列的不同值 仅选择不同值 我尝试过类似的东西 SELECT DISTINCT a b c d FROM my table SELECT DISTINCT
  • Spring 5 WebFlux 中的拦截器

    我在用Spring WebFlux在我的项目中 我想创建一个拦截器来计算每个 API 所花费的时间 在Spring MVC我们有HandlerInterceptor不存在于spring boot starter webflux 我尝试添加s