当前位置: 首页 > 知识库问答 >
问题:

RequestParam和PathVariable上的自定义注释

越嘉茂
2023-03-14

我创建了一个自定义注释

annotation class UserControl(
    val userIdentifier: String
)

我希望将此注释应用于不同控制器中的查询参数和路径变量。

    fun userWithMobile(
        @UserControl("PhoneNumber")
        @RequestParam mobile: String
    ): RegisteredUser {
        return userManager.getUserWithPhoneNumber(mobile))
    }

如何检查查询参数是否有UserControl注释,并对其进行一些处理。是否有标准方法来编写全局处理程序或处理器?

非常感谢您的帮助

共有1个答案

汤英豪
2023-03-14

AspectJ可以直接匹配参数注释,但不能将它们绑定到类或方法注释之类的通知方法值。所以,如果你只想匹配它们,一个简单的切入点就足够了。如果你想访问注释,也许还有它们的参数值,你需要一点反射魔法。我已经多次回答了相关问题,这就是为什么我要把这个问题作为一个副本来结束。但首先,这里是您想要阅读的资源。它们都与您的问题相关,展示了如何处理不同具体情况的示例:

  • https://stackoverflow.com/a/38162279/1082681

基本上,你想要的切入点如下或它的一些变体:

execution(* *(.., @my.package.UserControl (*), ..))

不匹配切入点中的参数,仅使用重新感染的简单、效率较低的方法:

  • https://stackoverflow.com/a/27784714/1082681
  • https://stackoverflow.com/a/42561014/1082681
 类似资料:
  • 在处理特殊字符时,和有什么区别? 被接受为空格。 在的情况下,被接受为。

  • 问题内容: 和处理特殊字符之间有什么区别? 被空间接受。 在的情况下,被接受为。 问题答案: 是从URI(Spring称为URI模板)中获取一些占位符—请参见Spring参考第16.3.2.2章URI模板模式 也是要从URI中获取参数—请参见第16.3.3.3章,使用@RequestParam将请求参数绑定到方法参数 如果该网址http://localhost:8080/MyApp/user/12

  • 我的理解是请求参数是方法传递所需的id,而path变量说这个变量应该在请求过程中找到

  • 使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。 连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如: :1,10s/^/#/g 表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望

  • 我试图创建会影响序列化值的自定义jackson注释。 意思是: 现在序列化对象X(10)将导致: 我怎样才能做到这一点?

  • 我有一些应用程序在Spring boot中使用微服务架构。我已经在RestTemplate中使用@PathVariable发送了查询参数、对象、模型等。开发应用程序后,我做了一些研究,要求使用@RequestParam和@RequestBody。但我无法理解,也不知道如何使用@RequestBody和@RequestParam。使用@RequestBody而不是@PathVariable有什么好处