class org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor implements org.springframework.cglib.proxy.MethodInterceptor, org.springframework.context.annotation.ConfigurationClassEnhancer$ConditionalCallback
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
public java.lang.Object intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], org.springframework.cglib.proxy.MethodProxy);
descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.getBeanFactory:(Ljava/lang/Object;)Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
astore 5
start local 5 1: aload 2
invokestatic org.springframework.context.annotation.BeanAnnotationHelper.determineBeanNameFor:(Ljava/lang/reflect/Method;)Ljava/lang/String;
astore 6
start local 6 2: aload 2
invokestatic org.springframework.context.annotation.BeanAnnotationHelper.isScopedProxy:(Ljava/lang/reflect/Method;)Z
ifeq 6
3: aload 6
invokestatic org.springframework.context.annotation.ScopedProxyCreator.getTargetBeanName:(Ljava/lang/String;)Ljava/lang/String;
astore 7
start local 7 4: aload 5
aload 7
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
ifeq 6
5: aload 7
astore 6
end local 7 6: StackMap locals: org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String
StackMap stack:
aload 0
aload 5
new java.lang.StringBuilder
dup
ldc "&"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.factoryContainsBean:(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
ifeq 11
7: aload 0
aload 5
aload 6
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.factoryContainsBean:(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
ifeq 11
8: aload 5
new java.lang.StringBuilder
dup
ldc "&"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
astore 7
start local 7 9: aload 7
instanceof org.springframework.aop.scope.ScopedProxyFactoryBean
ifne 11
10: aload 0
aload 7
aload 2
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
aload 5
aload 6
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.enhanceFactoryBean:(Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
areturn
end local 7 11: StackMap locals:
StackMap stack:
aload 0
aload 2
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.isCurrentlyInvokedFactoryMethod:(Ljava/lang/reflect/Method;)Z
ifeq 18
12: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isInfoEnabled:()Z
ifeq 17
13: ldc Lorg/springframework/beans/factory/config/BeanFactoryPostProcessor;
aload 2
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifeq 17
14: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
ldc "@Bean method %s.%s is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean javadoc for complete details."
iconst_2
anewarray java.lang.Object
dup
iconst_0
15: aload 2
invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
aastore
dup
iconst_1
aload 2
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aastore
16: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
17: StackMap locals:
StackMap stack:
aload 4
aload 1
aload 3
invokevirtual org.springframework.cglib.proxy.MethodProxy.invokeSuper:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
18: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 3
aload 5
aload 6
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference:(Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 19 1 enhancedConfigInstance Ljava/lang/Object;
0 19 2 beanMethod Ljava/lang/reflect/Method;
0 19 3 beanMethodArgs [Ljava/lang/Object;
0 19 4 cglibMethodProxy Lorg/springframework/cglib/proxy/MethodProxy;
1 19 5 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
2 19 6 beanName Ljava/lang/String;
4 6 7 scopedBeanName Ljava/lang/String;
9 11 7 factoryBean Ljava/lang/Object;
Exceptions:
throws java.lang.Throwable
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
MethodParameters:
Name Flags
enhancedConfigInstance
beanMethod
beanMethodArgs
cglibMethodProxy
private java.lang.Object resolveBeanReference(java.lang.reflect.Method, java.lang.Object[], org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
descriptor: (Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
aload 4
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
istore 5
start local 5 1: iload 5
ifeq 3
2: aload 3
aload 4
iconst_0
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
3: StackMap locals: int
StackMap stack:
aload 2
invokestatic org.springframework.util.ObjectUtils.isEmpty:([Ljava/lang/Object;)Z
ifeq 4
iconst_0
goto 5
StackMap locals:
StackMap stack:
4: iconst_1
StackMap locals:
StackMap stack: int
5: istore 6
start local 6 6: iload 6
ifeq 14
aload 3
aload 4
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isSingleton:(Ljava/lang/String;)Z
ifeq 14
7: aload 2
dup
astore 10
arraylength
istore 9
iconst_0
istore 8
goto 13
StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int top int int java.lang.Object[]
StackMap stack:
8: aload 10
iload 8
aaload
astore 7
start local 7 9: aload 7
ifnonnull 12
10: iconst_0
istore 6
11: goto 14
end local 7 12: StackMap locals:
StackMap stack:
iinc 8 1
StackMap locals:
StackMap stack:
13: iload 8
iload 9
if_icmplt 8
14: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int
StackMap stack:
iload 6
ifeq 15
aload 3
aload 4
aload 2
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
goto 16
15: StackMap locals:
StackMap stack:
aload 3
aload 4
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
16: StackMap locals:
StackMap stack: java.lang.Object
astore 7
start local 7 17: aload 1
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
aload 7
invokestatic org.springframework.util.ClassUtils.isAssignableValue:(Ljava/lang/Class;Ljava/lang/Object;)Z
ifne 35
18: aload 7
aconst_null
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 26
19: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 24
20: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
ldc "@Bean method %s.%s called as bean reference for type [%s] returned null bean; resolving to null value."
iconst_3
anewarray java.lang.Object
dup
iconst_0
21: aload 1
invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
aastore
dup
iconst_1
aload 1
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aastore
dup
iconst_2
22: aload 1
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
aastore
23: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
24: StackMap locals: java.lang.Object
StackMap stack:
aconst_null
astore 7
25: goto 35
26: StackMap locals:
StackMap stack:
ldc "@Bean method %s.%s called as bean reference for type [%s] but overridden by non-compatible bean instance of type [%s]."
iconst_4
anewarray java.lang.Object
dup
iconst_0
27: aload 1
invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
aastore
dup
iconst_1
aload 1
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aastore
dup
iconst_2
28: aload 1
invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
aastore
dup
iconst_3
aload 7
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
aastore
29: invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
astore 8
start local 8 30: aload 3
aload 4
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getMergedBeanDefinition:(Ljava/lang/String;)Lorg/springframework/beans/factory/config/BeanDefinition;
astore 9
start local 9 31: new java.lang.StringBuilder
dup
aload 8
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " Overriding bean of same name declared in: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9
invokeinterface org.springframework.beans.factory.config.BeanDefinition.getResourceDescription:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 8
end local 9 32: goto 34
33: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int java.lang.Object java.lang.String
StackMap stack: org.springframework.beans.factory.NoSuchBeanDefinitionException
pop
34: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
aload 8
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 8 35: StackMap locals:
StackMap stack:
invokestatic org.springframework.beans.factory.support.SimpleInstantiationStrategy.getCurrentlyInvokedFactoryMethod:()Ljava/lang/reflect/Method;
astore 8
start local 8 36: aload 8
ifnull 39
37: aload 8
invokestatic org.springframework.context.annotation.BeanAnnotationHelper.determineBeanNameFor:(Ljava/lang/reflect/Method;)Ljava/lang/String;
astore 9
start local 9 38: aload 3
aload 4
aload 9
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.registerDependentBean:(Ljava/lang/String;Ljava/lang/String;)V
end local 9 39: StackMap locals: java.lang.reflect.Method
StackMap stack:
aload 7
astore 12
40: iload 5
ifeq 42
41: aload 3
aload 4
iconst_1
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
42: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int java.lang.Object java.lang.reflect.Method top top top java.lang.Object
StackMap stack:
aload 12
areturn
end local 8 end local 7 end local 6 43: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int
StackMap stack: java.lang.Throwable
astore 11
44: iload 5
ifeq 46
45: aload 3
aload 4
iconst_1
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
46: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int top top top top top java.lang.Throwable
StackMap stack:
aload 11
athrow
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 47 1 beanMethod Ljava/lang/reflect/Method;
0 47 2 beanMethodArgs [Ljava/lang/Object;
0 47 3 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
0 47 4 beanName Ljava/lang/String;
1 47 5 alreadyInCreation Z
6 43 6 useArgs Z
9 12 7 arg Ljava/lang/Object;
17 43 7 beanInstance Ljava/lang/Object;
30 35 8 msg Ljava/lang/String;
31 32 9 beanDefinition Lorg/springframework/beans/factory/config/BeanDefinition;
36 43 8 currentlyInvoked Ljava/lang/reflect/Method;
38 39 9 outerBeanName Ljava/lang/String;
Exception table:
from to target type
30 32 33 Class org.springframework.beans.factory.NoSuchBeanDefinitionException
1 40 43 any
MethodParameters:
Name Flags
beanMethod
beanMethodArgs
beanFactory
beanName
public boolean isMatch(java.lang.reflect.Method);
descriptor: (Ljava/lang/reflect/Method;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
ldc Ljava/lang/Object;
if_acmpeq 4
1: aload 1
invokestatic org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor.isSetBeanFactory:(Ljava/lang/reflect/Method;)Z
ifne 4
2: aload 1
invokestatic org.springframework.context.annotation.BeanAnnotationHelper.isBeanAnnotated:(Ljava/lang/reflect/Method;)Z
ifeq 4
3: iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 5 1 candidateMethod Ljava/lang/reflect/Method;
MethodParameters:
Name Flags
candidateMethod
private org.springframework.beans.factory.config.ConfigurableBeanFactory getBeanFactory(java.lang.Object);
descriptor: (Ljava/lang/Object;)Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
ldc "$$beanFactory"
invokestatic org.springframework.util.ReflectionUtils.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
astore 2
start local 2 1: aload 2
ifnull 2
iconst_1
goto 3
StackMap locals: java.lang.reflect.Field
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: ldc "Unable to find generated bean factory field"
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
4: aload 2
aload 1
invokestatic org.springframework.util.ReflectionUtils.getField:(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
astore 3
start local 3 5: aload 3
ifnull 6
iconst_1
goto 7
StackMap locals: java.lang.Object
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: ldc "BeanFactory has not been injected into @Configuration class"
invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
8: aload 3
instanceof org.springframework.beans.factory.config.ConfigurableBeanFactory
9: ldc "Injected BeanFactory is not a ConfigurableBeanFactory"
10: invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
11: aload 3
checkcast org.springframework.beans.factory.config.ConfigurableBeanFactory
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 12 1 enhancedConfigInstance Ljava/lang/Object;
1 12 2 field Ljava/lang/reflect/Field;
5 12 3 beanFactory Ljava/lang/Object;
MethodParameters:
Name Flags
enhancedConfigInstance
private boolean factoryContainsBean(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.containsBean:(Ljava/lang/String;)Z
ifeq 1
aload 1
aload 2
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
ifne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 2 1 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
0 2 2 beanName Ljava/lang/String;
MethodParameters:
Name Flags
beanFactory
beanName
private boolean isCurrentlyInvokedFactoryMethod(java.lang.reflect.Method);
descriptor: (Ljava/lang/reflect/Method;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: invokestatic org.springframework.beans.factory.support.SimpleInstantiationStrategy.getCurrentlyInvokedFactoryMethod:()Ljava/lang/reflect/Method;
astore 2
start local 2 1: aload 2
ifnull 4
aload 1
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
aload 2
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 4
2: aload 1
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
aload 2
invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
ifeq 4
3: iconst_1
ireturn
StackMap locals: java.lang.reflect.Method
StackMap stack:
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 5 1 method Ljava/lang/reflect/Method;
1 5 2 currentlyInvoked Ljava/lang/reflect/Method;
MethodParameters:
Name Flags
method
private enhanceFactoryBean(, java.lang.Class<?>, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
astore 5
start local 5 1: aload 5
invokevirtual java.lang.Class.getModifiers:()I
invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
istore 6
start local 6 2: aload 5
ldc "getObject"
iconst_0
anewarray java.lang.Class
invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
invokevirtual java.lang.reflect.Method.getModifiers:()I
invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
istore 7
start local 7 3: iload 6
ifne 4
iload 7
ifeq 27
4: StackMap locals: java.lang.Class int int
StackMap stack:
aload 2
invokevirtual java.lang.Class.isInterface:()Z
ifeq 15
5: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
ifeq 13
6: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Creating interface proxy for FactoryBean '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' of type ["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
7: aload 5
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "] for use within another @Bean method because its "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
8: iload 6
ifeq 9
ldc "implementation class"
goto 10
StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
9: ldc "getObject() method"
StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
10: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: ldc " is final: Otherwise a getObject() call would not be routed to the factory."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
13: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
aload 3
aload 4
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.createInterfaceProxyForFactoryBean:(Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
14: areturn
15: StackMap locals:
StackMap stack:
getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 24
16: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Unable to proxy FactoryBean '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' of type ["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: aload 5
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "] for use within another @Bean method because its "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: iload 6
ifeq 19
ldc "implementation class"
goto 20
StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
19: ldc "getObject() method"
StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
20: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc " is final: A getObject() call will NOT be routed to the factory. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: ldc "Consider declaring the return type as a FactoryBean interface."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
24: StackMap locals:
StackMap stack:
aload 1
25: areturn
end local 7 end local 6 end local 5 26: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String
StackMap stack: java.lang.NoSuchMethodException
pop
27: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 3
aload 4
invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.createCglibProxyForFactoryBean:(Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 28 1 factoryBean Ljava/lang/Object;
0 28 2 exposedType Ljava/lang/Class<*>;
0 28 3 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
0 28 4 beanName Ljava/lang/String;
1 26 5 clazz Ljava/lang/Class<*>;
2 26 6 finalClass Z
3 26 7 finalMethod Z
Exception table:
from to target type
0 14 26 Class java.lang.NoSuchMethodException
15 25 26 Class java.lang.NoSuchMethodException
Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
MethodParameters:
Name Flags
factoryBean final
exposedType
beanFactory final
beanName final
private createInterfaceProxyForFactoryBean(, java.lang.Class<?>, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
descriptor: (Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
iconst_1
anewarray java.lang.Class
dup
iconst_0
aload 2
aastore
1: aload 3
aload 4
aload 1
invokedynamic invoke(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(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;
Method arguments:
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
org/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor.lambda$0(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (6)
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
2: invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 3 1 factoryBean Ljava/lang/Object;
0 3 2 interfaceType Ljava/lang/Class<*>;
0 3 3 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
0 3 4 beanName Ljava/lang/String;
Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
MethodParameters:
Name Flags
factoryBean final
interfaceType
beanFactory final
beanName final
private java.lang.Object createCglibProxyForFactoryBean(java.lang.Object, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
descriptor: (Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new org.springframework.cglib.proxy.Enhancer
dup
invokespecial org.springframework.cglib.proxy.Enhancer.<init>:()V
astore 4
start local 4 1: aload 4
aload 1
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual org.springframework.cglib.proxy.Enhancer.setSuperclass:(Ljava/lang/Class;)V
2: aload 4
getstatic org.springframework.cglib.core.SpringNamingPolicy.INSTANCE:Lorg/springframework/cglib/core/SpringNamingPolicy;
invokevirtual org.springframework.cglib.proxy.Enhancer.setNamingPolicy:(Lorg/springframework/cglib/core/NamingPolicy;)V
3: aload 4
ldc Lorg/springframework/cglib/proxy/MethodInterceptor;
invokevirtual org.springframework.cglib.proxy.Enhancer.setCallbackType:(Ljava/lang/Class;)V
4: aload 4
invokevirtual org.springframework.cglib.proxy.Enhancer.createClass:()Ljava/lang/Class;
astore 5
start local 5 5: aconst_null
astore 6
start local 6 6: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.objenesis:Lorg/springframework/objenesis/SpringObjenesis;
invokevirtual org.springframework.objenesis.SpringObjenesis.isWorthTrying:()Z
ifeq 13
7: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.objenesis:Lorg/springframework/objenesis/SpringObjenesis;
aload 5
aload 4
invokevirtual org.springframework.cglib.proxy.Enhancer.getUseCache:()Z
invokevirtual org.springframework.objenesis.SpringObjenesis.newInstance:(Ljava/lang/Class;Z)Ljava/lang/Object;
astore 6
8: goto 13
9: StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String org.springframework.cglib.proxy.Enhancer java.lang.Class java.lang.Object
StackMap stack: org.springframework.objenesis.ObjenesisException
astore 7
start local 7 10: getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
ldc "Unable to instantiate enhanced FactoryBean using Objenesis, falling back to regular construction"
11: aload 7
12: invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 7 13: StackMap locals:
StackMap stack:
aload 6
ifnonnull 20
14: aload 5
iconst_0
anewarray java.lang.Class
invokestatic org.springframework.util.ReflectionUtils.accessibleConstructor:(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
iconst_0
anewarray java.lang.Object
invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
astore 6
15: goto 20
16: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
start local 7 17: new java.lang.IllegalStateException
dup
ldc "Unable to instantiate enhanced FactoryBean using Objenesis, and regular FactoryBean instantiation via default constructor fails as well"
18: aload 7
19: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 20: StackMap locals:
StackMap stack:
aload 6
checkcast org.springframework.cglib.proxy.Factory
iconst_0
aload 2
aload 3
aload 1
invokedynamic intercept(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/cglib/proxy/MethodInterceptor;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(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;
Method arguments:
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
org/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor.lambda$1(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object; (6)
(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
invokeinterface org.springframework.cglib.proxy.Factory.setCallback:(ILorg/springframework/cglib/proxy/Callback;)V
21: aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
0 22 1 factoryBean Ljava/lang/Object;
0 22 2 beanFactory Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
0 22 3 beanName Ljava/lang/String;
1 22 4 enhancer Lorg/springframework/cglib/proxy/Enhancer;
5 22 5 fbClass Ljava/lang/Class<*>;
6 22 6 fbProxy Ljava/lang/Object;
10 13 7 ex Lorg/springframework/objenesis/ObjenesisException;
17 20 7 ex Ljava/lang/Throwable;
Exception table:
from to target type
7 8 9 Class org.springframework.objenesis.ObjenesisException
14 15 16 Class java.lang.Throwable
MethodParameters:
Name Flags
factoryBean final
beanFactory final
beanName final
private static java.lang.Object lambda$0(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String, java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=6, args_size=6
start local 3 start local 4 start local 5 0: aload 4
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "getObject"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 2
aload 5
ifnonnull 2
1: aload 0
aload 1
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 4
aload 2
aload 5
invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 5 end local 4 end local 3 LocalVariableTable:
Start End Slot Name Signature
0 3 3 proxy Ljava/lang/Object;
0 3 4 method Ljava/lang/reflect/Method;
0 3 5 args [Ljava/lang/Object;
Exceptions:
throws java.lang.Throwable
private static java.lang.Object lambda$1(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String, java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[], org.springframework.cglib.proxy.MethodProxy);
descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=7, args_size=7
start local 3 start local 4 start local 5 start local 6 0: aload 4
invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
ldc "getObject"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 2
aload 5
arraylength
ifne 2
1: aload 0
aload 1
invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
areturn
2: StackMap locals:
StackMap stack:
aload 6
aload 2
aload 5
invokevirtual org.springframework.cglib.proxy.MethodProxy.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 6 end local 5 end local 4 end local 3 LocalVariableTable:
Start End Slot Name Signature
0 3 3 obj Ljava/lang/Object;
0 3 4 method Ljava/lang/reflect/Method;
0 3 5 args [Ljava/lang/Object;
0 3 6 proxy Lorg/springframework/cglib/proxy/MethodProxy;
Exceptions:
throws java.lang.Throwable
}
SourceFile: "ConfigurationClassEnhancer.java"
NestHost: org.springframework.context.annotation.ConfigurationClassEnhancer
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
private BeanFactoryAwareMethodInterceptor = org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor of org.springframework.context.annotation.ConfigurationClassEnhancer
private BeanMethodInterceptor = org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor of org.springframework.context.annotation.ConfigurationClassEnhancer
private abstract ConditionalCallback = org.springframework.context.annotation.ConfigurationClassEnhancer$ConditionalCallback of org.springframework.context.annotation.ConfigurationClassEnhancer