开发者社区> 问答> 正文

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

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 还是什么造成了这样的结果吗?

展开
收起
问问小秘 2020-01-09 18:36:02 2306 0
1 条回答
写回答
取消 提交回答
  • 这是内部类的命名方式,源码是没有的,编译后class文件的名称是这个格式,你也可以在本地写个内部类看看

    2020-01-09 18:40:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Spring框架入门 立即下载
Spring Boot 2.5开发实战 立即下载

相关实验场景

更多