Files
springboot-scaffold/target/classes/com/example/scaffold/learning/IocLearningController.class

51 lines
12 KiB
Plaintext
Raw Normal View History

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<01>  3com/example/scaffold/learning/IocLearningControllerapplicationContext0Lorg/springframework/context/ApplicationContext;  
.org/springframework/context/ApplicationContextgetBeanDefinitionNames()[Ljava/lang/String;java/util/LinkedHashMap
 <init>()Vtotal
 java/lang/IntegervalueOf(I)Ljava/lang/Integer;    java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" userBeans
$%& '(java/util/Arraysstream.([Ljava/lang/Object;)Ljava/util/stream/Stream;* +,test ()Ljava/util/function/Predicate; ./0 12java/util/stream/Streamfilter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; .4 56sorted()Ljava/util/stream/Stream; .8 9:toList()Ljava/util/List;<allBeans > ?@getBean&(Ljava/lang/String;)Ljava/lang/Object;
BCD EFjava/lang/ObjectgetClass()Ljava/lang/Class;HnameJtype
LMN OPjava/lang/ClassgetName()Ljava/lang/String;R
simpleName
LT UP getSimpleNameW
interfaces
LY Z[ getInterfaces()[Ljava/lang/Class;
$] ^_toString'([Ljava/lang/Object;)Ljava/lang/String;a annotations
Lc degetAnnotations$()[Ljava/lang/annotation/Annotation;gscope i jk isSingleton(Ljava/lang/String;)Zm singletono prototype q rsof<00>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;u(org/springframework/beans/BeansExceptionwerrory z{makeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String; } r~5(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;<00>构造器注入<00>0推荐明确依赖不可变易于测试<00> Setter注入<00>可选依赖,灵活性高<00> 字段注入<00>'不推荐!隐藏依赖,难以测试<00>本控制器使用<00>>构造器注入 (RequiredArgsConstructor) + 字段注入演示 <00> r<00><00>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;<00>3单例 - 整个应用只有一个实例(默认)<00>'原型 - 每次请求都创建新实例<00>request<00>'请求 - 每个 HTTP 请求一个实例<00>session<00>'会话 - 每个 HTTP 会话一个实例<00> lazySingleton<00>3懒加载单例 - 第一次真正获取时才创建<00>tip<00>4session scope 需要在 web 请求上下文中使用<00>jvmClassLoading<00>-类第一次被引用时才可能触发加载<00>1static 代码块在类初始化阶段执行一次<00>8类加载成功后JVM 里就有这个 Class 元数据 <00><00><00> r<00>java/util/ListH(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;<00>springBeanLifecycle<00>扫描 BeanDefinition<00>3实例化 Beansingleton 通常在启动阶段)<00> 依赖注入<00>@PostConstruct 初始化<00>"放入单例池或按 scope 管理<00>$容器关闭时销毁 singleton Bean <00><00> r<00>~(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;<00>coreIdea<00>?类加载 ≠ Bean 创建Bean 创建 ≠ 每次请求都 new <00> r<00>}(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; <00> <00><00>lifecycleTracker=Lcom/example/scaffold/learning/lifecycle/IocLifecycleTracker;
<00><00><00> <00>:;com/example/scaffold/learning/lifecycle/IocLifecycleTrackersnapshot
<00><00> <00>reset<00>status<00>ok<00>message<00>生命周期时间线已重置 <00> r<00>Y(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
<00><00><00> <00><00>java/lang/StringhashCode()I
<00><00> <00><00>equals(Ljava/lang/Object;)Z<00>lazy<00>iocPrototypeLifecycleBean<00>iocLazySingletonLifecycleBean<00>iocSingletonLifecycleBean<00>9com/example/scaffold/learning/lifecycle/LifecycleDemoBean <00><00> <00><00>inspect#(Ljava/lang/String;)Ljava/util/Map;
<00> <00>(Ljava/util/Map;)V<00>beanNameFromContextisSingletonInContext
 java/lang/Boolean(Z)Ljava/lang/Boolean; timelineSize <00> 
<00>size  compare-1 compare-2 <00> r6(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;  performanceAspect,Lcom/example/scaffold/aop/PerformanceAspect;
 *com/example/scaffold/aop/PerformanceAspectgetStats()Ljava/util/Map; accept0(Ljava/util/Map;)Ljava/util/function/BiConsumer; ! "#forEach"(Ljava/util/function/BiConsumer;)V
% &
resetStats(性能统计已重置
B +,- ./6com/example/scaffold/aop/PerformanceAspect$MethodStats totalTime(Ljava/util/concurrent/atomic/AtomicLong;
123 45&java/util/concurrent/atomic/AtomicLongget()JB@ +9 :/
totalCount<count
>?@ Ajava/lang/Long(J)Ljava/lang/Long;Cerrors +E F/
errorCountHtotalMsJavgMsLmaxMs +N O/maxTime Q rR<00>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;Tuser
<00>V Wk
startsWithYlearning[Service
<00>] ^_contains(Ljava/lang/CharSequence;)Za
ControllercMapper listBeansCodeLineNumberTableLocalVariableTablethis5Lcom/example/scaffold/learning/IocLearningController; beanNames[Ljava/lang/String;resultLjava/util/Map;LocalVariableTypeTable5Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; Signature7()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;RuntimeVisibleAnnotations4Lorg/springframework/web/bind/annotation/GetMapping;value/beans getBeanDetailbeanLjava/lang/Object;clazzLjava/lang/Class;e*Lorg/springframework/beans/BeansException;Ljava/lang/String;Ljava/lang/Class<*>; StackMapTableMethodParametersI(Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>; /beans/{name}"RuntimeVisibleParameterAnnotations6Lorg/springframework/web/bind/annotation/PathVariable;injectionTypes7()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;/injection-typesscopes/scopeslifecycleOverview/lifecycle/overviewlifecycleTimelineI()Ljava/util/List<Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;/lifecycle/timelineresetLifecycleTimeline5Lorg/springframework/web/bind/annotation/PostMapping;/lifecycle/resetinspectLifecycleBean5(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map; scopeTypetriggerbeanName;Lcom/example/scaffold/learning/lifecycle/LifecycleDemoBean;[(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;/lifecycle/inspect/{scopeType}6Lorg/springframework/web/bind/annotation/RequestParam; defaultValue manual-check compareScopes
singleton1
singleton2
prototype1
prototype2lazy1lazy2/lifecycle/comparegetPerformancestats[Ljava/util/Map<Ljava/lang/String;Lcom/example/scaffold/aop/PerformanceAspect$MethodStats;>; /performanceresetPerformance/performance/reset<00>(Lorg/springframework/context/ApplicationContext;Lcom/example/scaffold/aop/PerformanceAspect;Lcom/example/scaffold/learning/lifecycle/IocLifecycleTracker;)Vlambda$getPerformance$1\(Ljava/util/Map;Ljava/lang/String;Lcom/example/scaffold/aop/PerformanceAspect$MethodStats;)Vkey8Lcom/example/scaffold/aop/PerformanceAspect$MethodStats;Jlambda$listBeans$0
SourceFileIocLearningController.java8Lorg/springframework/web/bind/annotation/RestController;8Lorg/springframework/web/bind/annotation/RequestMapping;/api/learning/ioc NestMembers<01>@com/example/scaffold/learning/IocLearningController$LearningBeanBootstrapMethods<00><01>
<01> <01>kk<01>Bean not found: <01>'(Ljava/lang/Object;Ljava/lang/Object;)V<01>
<01> <01><01><01>M(Ljava/lang/String;Lcom/example/scaffold/aop/PerformanceAspect$MethodStats;)V<01>
<01><01><01> <01><01>"java/lang/invoke/LambdaMetafactory metafactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;<01>
<01><01><01> z<01>$java/lang/invoke/StringConcatFactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; InnerClasses MethodStats LearningBean<01>%java/lang/invoke/MethodHandles$Lookup<01>java/lang/invoke/MethodHandlesLookup!B<00><00>de<00>Z*<2A><01>L<> Y<>M,+<2B><><15>W,!+<2B>#<23>)<00>-<00>3<00>7<00>W,;+<2B>#<23>3<00>7<00>W,<2C>f*
,
./ 0,11364;0A5X7g Zhi
PjkHlmn Hlopqrst[suv<00>eo X*<2A>+<2B>=M,<2C>ANG+I-<2D>KQ-<2D>SV-<2D>X<>\`-<2D>b<>\f*<2A>+<2B>h<00>l<>n<>p<>Mv+<2B>x<00>|<7C>JKtf. @ ACEF"G+H3IGCKKLLg4 @wx;yzL {|XhiXH}n ;y~}<03>E<00>BL <00><00><00><00><00><00><00><00><00><00><00><><00>BL <00><00><00><00><00><00><00><00><00><00><00>B<><00>t<01>Hp<01>rst[s<01><01><01><01>e><12><12><12><12><12><12><12><><00><>fUg hip<01>rst[s<01><01>eF l<12>n<12><12><12><12><12><12><12><12><12><>p<>fbg hipqrst[s<01><01>eZ $<12><12><12><12><><00><12><12><12><12><12><12><12><><00><12>ƸȰfqrw qg $hipqrst[s<01><01>:e2*<2A>˶ϰf<00>g hip<01>rst[s<01><01>eA*<2A>˶<00><12><12><12>ݸ߰f
<00><00>g hip<01>r<01>t[s<01><01><01>e<01><00>+:6<04><00><>6<02>O%"2<>t)n<><00><>6<05><12><><00><>6<05>#<12><>
<12><><12>N*<2A>-<2D>=<00><00>:<04> Y,<2C><00><00><00>:<12>-<2D>W<12>*<2A>-<2D>h<00><01>W*<2A>˶Ϲ<00><15>W<05>f*
<00>\<00>a<00>f<00>i<00>x<00><00><00><00><00><00><00><00><00>g><00>hi<00><01>}<00><01>}i_<01>}xPw<01><00>?lmn <00>?lo"<07>$<00> <04><00><00><00><01> <01><01>p<01>rst[s<01><01><01><01><01>s<01><01>e7<00>*<2A><12><>=<00><00>L*<2A><12><>=<00><00>M*<2A><12><>=<00><00>N*<2A><12><>=<00><00>:*<2A><12><>=<00><00>:*<2A><12><>=<00><00>:l+ <0B><00>, <0A><00><00>n- <0B><00> <0A><00><00><12> <0B><00> <0A><00><00><0F>Ȱf. <00><00><00>-<00>=<00>M<00>]<00>c<00>z<00><00><00><00><00>gH<00>hi<00><01><01><00><01><01>-|<01><01>=l<01><01>M\<01><01>]L<01><01>pqrst[s<01><01>e<00>*<2A><12>L<> Y<>M+,<2C><00> ,<2C>f<00><00><00><00>g hi<01>mlmn<01><01>lopqrst[s<01><01>eB*<2A><12>$<12><12><12>'<27>߰f
<00><00>g hip<01>r<01>t[s<01><01>e\*<2A>)*+<2B>*,<2C>*-<2D>˱fg*hi<00><00><01> <00>
<01><01>e<00> i,<2C>*<2A>06mB,<2C>8<>0 <09><>!,<2C>8<>0m<30> 7*+;,<2C>8<>0<>=B,<2C>D<>0<>=G!<21>=I<05>=K,<2C>M<>0<>=<3D>P<>W<>f*
<00> <00>'<00>0<00>=<00>G<00>O<00>Y<00>_<00>h<00>g4ilmi<01>}it<01> ]H<01>'BJ<01><02>$@
<01>kev8*S<>U<>+*X<>U<>!*Z<>\<5C>*`<60>\<5C> *b<>\<5C><04><03>f1271g 8H}2@<01><01>r<01><01>t[s<01><01><01><01><01><01><01><01><01><01><01><01><01><01><01>+<01> <01><01> <01><01><01>