常见的服务器调用堆栈
自顶向下调用
$ 是内部类的意思
$$ 是由 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