首页 > 解决方案 > 如何轻松找到哪些端点调用了方法?

问题描述

我有一个包含许多端点的应用程序。我对 functionWhoIsCallingMe() 进行了更改。我想找到哪些控制器端点(直接或分层)调用此函数,以便我可以对其进行测试。

@RequestMapping("/a")
someEndpoint(){
 anyFunction()
}

@RequestMapping("/b")
anotherEndpoint(){
 functionWhoIsCallingMe()
}

anyFunction(){
  functionWhoIsCallingMe()
}

鉴于此代码,我想知道 ["/a", "/b"] 正在调用 functionWhoIsCallingMe()。

我尝试了“调用层次结构”,但这在这里不实用,因为打开所有选项卡需要很长时间。我也尝试过像这里建议的过滤,但这不起作用,因为您只能指定一种不匹配的类,如果它不匹配,则不会显示调用方法。我不能说只显示文件名中带有 Controller 的文件。

标签: javaeclipse

解决方案


@RequestMapping("/b")
public void someEndpoint() {
    anyFunction(1);
}
@RequestMapping("/b")
public void anotherEndpoint() {
    functionWhoIsCallingMe(1);
}

public void anyFunction(int val/** init val=1*/) {
    functionWhoIsCallingMe(val + 1);
}

public void functionWhoIsCallingMe(int val/** init val=1*/) {
    try {
        final StackTraceElement[] ste = Thread.currentThread().getStackTrace();
        String defName = ste[val + 1].getMethodName();
        String[] path = this.getClass().getMethod(defName).getAnnotation(RequestMapping.class).value();
        System.out.println("Url path:" + path[0]);
    } catch (Exception ex) {
    }
}

推荐阅读