Executable instead of Object for constructor or factory method

Issue: SPR-13188
This commit is contained in:
Juergen Hoeller
2016-07-24 15:34:03 +02:00
parent 4a85309a04
commit ed49ce838e
2 changed files with 4 additions and 3 deletions

View File

@@ -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;

View File

@@ -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 {
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 {
*/
public Method getResolvedFactoryMethod() {
synchronized (this.constructorArgumentLock) {
Object candidate = this.resolvedConstructorOrFactoryMethod;
Executable candidate = this.resolvedConstructorOrFactoryMethod;
return (candidate instanceof Method ? (Method) candidate : null);
}
}