繁体   English   中英

如何在Java中获取方法的调用者名称

[英]How to get caller name for a method in Java

我有一个 API,它有很多操作,比如 getX、getY、getZ 等。还有很多写操作,比如 writeX、writeY 和 writeZ 等。因为这是一个休息服务,每个控制器方法都映射有特定的操作名称。

@Controller(url) //just an example 
getX(param1, param2){

}

我有与 dynamodb 表交互的数据访问层。 我计划将读取和写入容量指标添加到我的 DAO 层,以便我知道哪个 API 成本高。 一个 API 可以一次访问多个 dynamodb 表。 鉴于此,如果我想知道哪个 API 调用了 dynamodb,我将不得不从控制器--> 管理器--> DAO 方法传入操作名称。 这将需要大量的代码重构。

有没有更好更有效的方法来获取 DAO 层内最顶层的调用者名称而不传递方法名称。

很难操纵,但这可以解决问题

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()

基本上指数越高,方法调用越不近。 尽管看起来很诱人,但控制器不会是第一个被调用的方法,并非总是如此。 您可以做的是使用方法.getClassName()并可能获取包含类名的“Controller”字的数组的最后一项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM