Spring 中这样的方法名是怎样出现的呢?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Spring 中这样的方法名是怎样出现的呢?

问问小秘 2020-01-09 18:36:02 1133

Spring 中这样的方法名是怎样出现的呢?

我写了一个方法用来获取调用它的方法的名称:

/**
 * 获取调用栈中的方法名
 * <p>
 * StackTraceElement: [deduceInvokerMethodName, invoker...]
 *
 * @return 方法名
 */
private String deduceInvokerMethodName() {
    StackTraceElement[] stackTraceElements = new RuntimeException().getStackTrace();
    return stackTraceElements[1].getMethodName();
}

但是在实际使用中,我得到了类似如下形式的方法名:

invoker$original$4FWoUDJy

其中,$original$4FWoUDJy 部分是从何而来的呢?

这个方法位于这样一个类下面:

@Slf4j
@Validated
@RestController
@RequestMapping("/api/v2")
public class Api {}

同时使用了 AOP 拦截处理相关的请求,是 cglib 还是什么造成了这样的结果吗?

Java API Spring
分享到
取消 提交回答
全部回答(1)
  • jiewuyu
    2020-01-09 18:40:47

    这是内部类的命名方式,源码是没有的,编译后class文件的名称是这个格式,你也可以在本地写个内部类看看

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程