自顶向下调用

$ 是内部类的意思

$$ 是由 Lambda 生成的内部类的意思:https://stackoverflow.com/questions/36057007/what-does-in-javac-generated-name-mean。当然 Spring 的 CGLIB 可以自己控制 naming pattern。

内部类生成的类名后往往带有一个数字,这个数字表示编译器生成这个内部类的顺序

Thread.run()

ThreadPoolExecutor$Worker.run()

ThreadPoolExecutor.runWorker()

Netty.DefaultServerHandler.run()

Netty.DefaultServerHandler.handleRequest()

ThriftServerPublisher$MTProccessor.process()

Thrift 接口$Processor.方法名()

com.sun.proxy$Proxy 数字.方法名()

XXXServiceImpl1fb0b39f.被拦截的方法

ThriftInvoker.invoker()

RhinoLimiterFilter.filter()

ThriftInvoker.invoke()

ThriftInvoker.doinvoke()

java.lang.reflect.Method.invoke()

sun.reflect.DelegatingMethodAccessorImpl 数字.invoke()

thrift接口Impl随机名称.被拦截的方法

org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)

Spring Test 的调用堆栈

org.Springframework.Test.Context.Cache.DefaultCacheAwareContextLoaderDelegate.LoadContext -> org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal -> org.springframework.boot.test.context.SpringBootContextLoader.loadContext -> org.springframework.boot.SpringApplication.run -> org.springframework.boot.SpringApplication.refreshContext-> org.springframework.boot.SpringApplication.refresh