java—如何轻松找到哪些端点调用方法?

p4tfgftt  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(178)

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

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

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

anyFunction(){
  functionWhoIsCallingMe()
}

给定这段代码,我想知道[“/a”,“/b”]正在调用functionwhoiscallingme()。
我尝试了“调用层次结构”,但这在这里并不实用,因为打开所有选项卡需要很长时间。我也尝试过像这里建议的那样进行过滤,但这不起作用,因为您只能指定一种不匹配的类类型,如果不匹配,则不会显示调用方法。我不能说只显示文件名中带有控制器的文件。

brccelvz

brccelvz1#

@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) {
    }
}

相关问题