Browse Source

Executable instead of Object for constructor or factory method

Issue: SPR-13188
pull/1112/merge
Juergen Hoeller 10 years ago
parent
commit
ed49ce838e
  1. 2
      spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java
  2. 5
      spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java

2
spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java

@ -898,7 +898,7 @@ class ConstructorResolver { @@ -898,7 +898,7 @@ class ConstructorResolver {
return Integer.MAX_VALUE - 1024;
}
public void storeCache(RootBeanDefinition mbd, Object constructorOrFactoryMethod) {
public void storeCache(RootBeanDefinition mbd, Executable constructorOrFactoryMethod) {
synchronized (mbd.constructorArgumentLock) {
mbd.resolvedConstructorOrFactoryMethod = constructorOrFactoryMethod;
mbd.constructorArgumentsResolved = true;

5
spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java

@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
package org.springframework.beans.factory.support;
import java.lang.reflect.Executable;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
import java.util.HashSet;
@ -59,7 +60,7 @@ public class RootBeanDefinition extends AbstractBeanDefinition { @@ -59,7 +60,7 @@ public class RootBeanDefinition extends AbstractBeanDefinition {
final Object constructorArgumentLock = new Object();
/** Package-visible field for caching the resolved constructor or factory method */
Object resolvedConstructorOrFactoryMethod;
Executable resolvedConstructorOrFactoryMethod;
/** Package-visible field for caching the return type of a generically typed factory method */
volatile Class<?> resolvedFactoryMethodReturnType;
@ -250,7 +251,7 @@ public class RootBeanDefinition extends AbstractBeanDefinition { @@ -250,7 +251,7 @@ public class RootBeanDefinition extends AbstractBeanDefinition {
*/
public Method getResolvedFactoryMethod() {
synchronized (this.constructorArgumentLock) {
Object candidate = this.resolvedConstructorOrFactoryMethod;
Executable candidate = this.resolvedConstructorOrFactoryMethod;
return (candidate instanceof Method ? (Method) candidate : null);
}
}

Loading…
Cancel
Save