【问题标题】:Finding Annotations in IntelliJ IDEA在 IntelliJ IDEA 中查找注解
【发布时间】:2011-04-06 05:47:19
【问题描述】:

我可以使用 SSR(结构搜索和替换)轻松找到我的项目中提到的某些注释。例如,我有以下基于弹簧的代码:

class DashboardController {

  @RequestMapping("/dashboard")
  public void doDashboard() {
    [...]
  }
}

如果我按模式org.springframework.web.bind.annotation.RequestMapping 搜索,我会找到我的代码。但是,如果我想找到带有参数化注解的方法,那么只找到带有注解 @RequestMapping 的“/dashboard” url 的方法呢?

我可以简单地通过@RequestMapping("/dashboard")字符串搜索,但是注解可以有几种写法:

@RequestMapping("/dashboard")
@RequestMapping(value = "/dashboard", method = {RequestMethod.POST})
@RequestMapping(headers = "content-type=application/*", value = "/dashboard")

等等

【问题讨论】:

    标签: java annotations intellij-idea structural-search


    【解决方案1】:

    在 IntelliJ IDEA 14 中使用结构搜索和替换。复制现有模板带注释的方法并将“/dashboard”作为参数添加到注释中,如下所示:

    class $Class$ {
      @$Annotation$("/dashboard")
      $MethodType$ $MethodName$($ParameterType$ $ParameterName$);
    }
    

    您可能还想编辑 $Annotation$ 变量并为其指定文本/正则表达式“RequestMapping” 这应该找到注释的所有可能格式(仅在方法上)。

    【讨论】:

      【解决方案2】:

      你为什么不搜索这个:

      @RequestMapping\(((.*?)value\s*=\s*)?"/dashboard"(.*?)\)
      

      【讨论】:

        【解决方案3】:

        为什么不直接搜索@RequestMapping("/dashboard"),它不太可能给出那么多误报。

        【讨论】:

        • 这个注解有几种写法。例如,@RequestMapping(value = "/dashboard", method = {RequestMethod.POST}) 等。
        • 然后使用正则表达式,例如@RequestMapping(.*"/dashboard".*)
        猜你喜欢
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 2019-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多