从 joinPoint 获取 HTTP 方法

2024-03-13

我需要从某个方面的 joinPoint 获取像 POST/PATCH/GET/etc 这样的 http 方法。

@Before("isRestController()")
    public void handlePost(JoinPoint point) {
        // do something to get for example "POST" to use below 
        handle(arg, "POST", someMethod::getBeforeActions);
    }

From point.getThis.getClass(),我得到了该调用被拦截的控制器。然后,如果我从中获取方法和注释。这应该足够好了吧?

So point.getThis().getClass().getMethod(point.getSignature().getName(), ???)我如何获取类参数类型?


以下代码获取所需的控制器方法注释详细信息

    @Before("isRestController()")
public void handlePost(JoinPoint point) {
    MethodSignature signature = (MethodSignature) point.getSignature();
    Method method = signature.getMethod();

    // controller method annotations of type @RequestMapping
    RequestMapping[] reqMappingAnnotations = method
            .getAnnotationsByType(org.springframework.web.bind.annotation.RequestMapping.class);
    for (RequestMapping annotation : reqMappingAnnotations) {
        System.out.println(annotation.toString());
        for (RequestMethod reqMethod : annotation.method()) {
            System.out.println(reqMethod.name());
        }
    }

    // for specific handler methods ( @GetMapping , @PostMapping)
    Annotation[] annos = method.getDeclaredAnnotations();
    for (Annotation anno : annos) {
        if (anno.annotationType()
                .isAnnotationPresent(org.springframework.web.bind.annotation.RequestMapping.class)) {
            reqMappingAnnotations = anno.annotationType()
                    .getAnnotationsByType(org.springframework.web.bind.annotation.RequestMapping.class);
            for (RequestMapping annotation : reqMappingAnnotations) {
                System.out.println(annotation.toString());
                for (RequestMethod reqMethod : annotation.method()) {
                    System.out.println(reqMethod.name());
                }
            }
        }
    }
}

注意:此代码可以进一步优化。作为示例共享以展示可能性

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

从 joinPoint 获取 HTTP 方法 的相关文章

  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • Jackson - 反序列化嵌套 JSON

    我有一个 JSON 字符串 其格式如下 response execution status ready report cache hit true created on 2013 07 29 08 42 42 fact cache erro
  • 使用 Java 在 WebDriver 中按 Ctrl+F5 刷新浏览器

    我已经使用 java 刷新了 WebDriver 中的浏览器 代码如下 driver navigate refresh 如何使用 Java 在 WebDriver 中按 Ctrl F5 来做到这一点 我认为您可以使用 WebDriver 和
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 无法使用 json 架构验证器根据预定义的 yaml 文件验证查询参数

    我需要根据预定义的 yaml 文件架构验证查询参数的架构 因此我使用 json 架构验证器 验证如何失败 我正在执行以下步骤 填充参数和相应的架构 final List
  • Java 正则表达式 - 字母数字,最多一个连字符,句点或下划线,七个字符长

    我是 Java 正则表达式工具的新手 尽管它们潜力巨大 但我很难完成这项任务 我想编写一个正则表达式来验证遵循以下语法的输入字符串 小写字母和数字的任意组合 仅一个下划线 一个破折号或一个句号 无其他特殊字符 最小长度为 5 我想出了以下解
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • JTable 和 JScrollpane 大小的问题

    我有一个JScrollPane with a JTable在里面 在里面JTable我最初有 3 行 稍后添加行 默认JTable我的 3 行很难看 因为JScrollPane calls getPreferredScrollableVie
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 异步迭代器

    我有以下代码 while slowIterator hasNext performLengthTask slowIterator next 由于迭代器和任务都很慢 因此将它们放入单独的线程中是有意义的 这是对迭代器包装器的快速而肮脏的尝试
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • JSch中如何设置文件类型和文件传输模式?

    我使用 Apache Common NetFTPClient并设置了我的ftpClient在上传文件之前使用如下所示的方法 ftpClient setFileType FTP BINARY FILE TYPE ftpClient setFi
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 公共方法与公共 API

    在干净的代码书中 有一个观点是 公共 API 中的 Javadocs 同样 Effective java 一书也有这样的内容 项目 56 为所有公开的 API 元素编写文档注释 所以这就是我的问题 所有公共方法都被视为公共 API 吗 它们
  • 对于当前月份和日期但年份不同的日期,经过的月份计算未给出正确的结果

    我正在尝试计算自特定日期以来经过的月份 该函数工作正常 尽管如果我将今天的日期与过去的不同年份放在一起 它会给我一个月的差异 不到一个月 假设对于所有日期 该函数都运行良好 除了 如果今天是 2014 03 06 YYYY MM DD 并且
  • 失败时石英重试

    假设我有一个这样配置的触发器
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java、Spring、Hibernate找不到org.springframework.orm.hibernate3.LocalSessionFactoryBean

    我正在尝试制作 spring hibernate ant 项目 目前我收到此错误 HTTP Status 500 type Exception report message description The server encountere

随机推荐

  • 网页抓取中如何获取重定向的URL?

    我想要的只是请求实际 url 后重定向的 url 这是实际的网址https metric picodi net us r 19761 当我使用此 url 在浏览器上按 Enter 键时 它会将我重定向到这样的 url https www o
  • 仅将天数和时间(小时 x 分钟 x 秒)转换为时间

    我有一个数据框 在其中比较两个不同日期之间的差异以获得小时和分钟的差异 例如 start date 2018 07 03 16 03 00 data final 2018 07 05 00 00 00 duration data final
  • 交叉联接行为 (SQLServer 2008)

    我一直在尝试找出我的查询的问题 该查询实际上是由 hibernate 从 HQL 生成的 但生成的 SQL 并没有达到我的预期 稍微修改 SQL 会产生正确的结果 但我不确定为什么修改会产生任何差异 原始查询 不返回任何行 select s
  • 如何在 Rust 中惯用地替换特定字符?

    所以我有字符串 Hello World 并想替换 和 这样新字符串就是 Hello World 在 Ruby 中 我们可以使用以下命令轻松完成此操作gsub method Hello World gsub 如何在 Rust 中惯用地做到这一
  • 创建随机二进制文件

    我正在尝试使用 python 创建一个随机二进制文件 这就是我已经得到的 f open filename wb for i in xrange size kb for ii in xrange 1024 4 f write struct p
  • MarshalAs 嵌套结构

    我有两个 C 结构 在从 C 调用 DLL 方法时必须将它们作为参数发送 例如 让我们将它们定义为 struct A int data struct B int MoreData A SomeData 我需要从 C 调用的方法具有以下签名
  • 在 IE 中打开新选项卡

    我正在使用以下代码在 Internet Explorer 中打开网站 ProcessStartInfo startInfo new ProcessStartInfo Arguments http www example com FileNa
  • 更改 use 元素上的 defs 中定义的属性

    如何通过脚本来更改 defs 中定义的 use element 的样式 我试图进入 w3c 工作草案界面 但我迷失在那个迷宫中
  • 在自动布局中将子视图的 X 居中会引发“未准备好约束”

    我有一个自定义 UIView 子类 它是通过笔尖初始化的 In awakeFromNib 我正在创建一个子视图并尝试将其置于其超级视图的中心 self setInteralView UIView alloc init self intern
  • Haskell 性能:组合与应用程序?

    我看到了一些关于函数组合和应用程序之间的相似点和差异以及实现它的各种方法的问题 但是有一件事开始让我有点困惑 据我搜索 还没有被问到 是关于函数组合和应用程序之间的差异表现 当我学习 F 时 我爱上了管道操作符 gt 这在 haskell
  • 具有未知属性名称的结构的嵌套属性?

    我使用 JSON 将一些值从外部源获取到变量中 我有这样的类型json Unmarshal https golang org pkg json Unmarshal将值放入 type Frame struct Type string Valu
  • 仅刷新 php 中的 div [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个想要更新的聊天框 但我只想刷
  • CTRL+C 不会停止 sinatra 应用程序

    Normally when I run a rails app from the console during development I can just press Ctrl C and it exits Then I can run
  • 在GDB中,如何在程序停止时自动执行命令? (如显示)

    我希望每次程序停止时自动执行一些命令 就像 display 对 x 所做的那样 我怎么做 这是我发现的简单方法 define hook stop commands to be executed when execution stops en
  • 动态更改 GPS LocationListener 的 minTime

    我正在编写的应用程序使用 GPS 位置管理器服务 requestLocationUpdates 但我希望能够更改整个程序中的最小时间和最小距离参数 我在创建时初始化位置侦听器 但我不知道如何更改这些参数 甚至不知道是否可以这样做 这样做的主
  • TimeZoneInfo.ConvertTimeFromUtc c#

    var Result1 TimeZoneInfo ConvertTimeFromUtc DateTime UtcNow TimeZoneInfo Local var Result2 TimeZoneInfo ConvertTimeFromU
  • 如何通过CSS突出显示java代码?

    我看到一些很酷的代码突出显示 看起来像 Eclipse 中的代码 但我找不到它 你知道任何很酷的 java 代码高亮 css 吗 我想你想要代码美化 http code google com p google code prettify 支
  • 如何取消我的 Microsoft Azure 订阅?

    我注册了 Azure 试用版 但不再使用它 但是 他们仍在向我的信用卡收费 我想取消订阅 但找不到方法 我也尝试联系客户服务中心 但没有回复 我如何取消 关闭我的帐户 要取消您的帐户 请登录 Azure 帐户门户 https account
  • Log4j2 已删除的滚动文件仍然打开并且磁盘空间未释放

    我最近在我的 tomcat6 服务器上从 log4j 迁移到 log4j2 问题是我删除的滚动文件永远保持打开状态 因此磁盘空间没有被释放 我使用此命令 sudo usr sbin lsof grep returned 来检查打开的已删除文
  • 从 joinPoint 获取 HTTP 方法

    我需要从某个方面的 joinPoint 获取像 POST PATCH GET etc 这样的 http 方法 Before isRestController public void handlePost JoinPoint point do