ConfigurationClassBeanDefinition implements AnnotatedBeanDefinition
This commit is contained in:
parent
cce6e2f4cd
commit
da71f266ae
|
|
@ -234,6 +234,9 @@ public class RootBeanDefinition extends AbstractBeanDefinition {
|
||||||
this.isFactoryMethodUnique = true;
|
this.isFactoryMethodUnique = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the given candidate qualifies as a factory method.
|
||||||
|
*/
|
||||||
public boolean isFactoryMethod(Method candidate) {
|
public boolean isFactoryMethod(Method candidate) {
|
||||||
return (candidate != null && candidate.getName().equals(getFactoryMethodName()));
|
return (candidate != null && candidate.getName().equals(getFactoryMethodName()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import java.util.Set;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition;
|
||||||
import org.springframework.beans.factory.annotation.Autowire;
|
import org.springframework.beans.factory.annotation.Autowire;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||||
|
|
@ -36,6 +37,7 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
||||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
import org.springframework.core.type.AnnotationMetadata;
|
||||||
import org.springframework.core.type.MethodMetadata;
|
import org.springframework.core.type.MethodMetadata;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
|
@ -110,10 +112,11 @@ class ConfigurationClassBeanDefinitionReader {
|
||||||
* {@link #registry} based on its contents.
|
* {@link #registry} based on its contents.
|
||||||
*/
|
*/
|
||||||
private void loadBeanDefinitionsForModelMethod(ConfigurationClassMethod method) {
|
private void loadBeanDefinitionsForModelMethod(ConfigurationClassMethod method) {
|
||||||
|
ConfigurationClass configClass = method.getDeclaringClass();
|
||||||
MethodMetadata metadata = method.getMetadata();
|
MethodMetadata metadata = method.getMetadata();
|
||||||
|
|
||||||
RootBeanDefinition beanDef = new ConfigurationClassBeanDefinition();
|
RootBeanDefinition beanDef = new ConfigurationClassBeanDefinition(configClass);
|
||||||
ConfigurationClass configClass = method.getDeclaringClass();
|
beanDef.setResource(configClass.getResource());
|
||||||
beanDef.setSource(this.sourceExtractor.extractSource(metadata, configClass.getResource()));
|
beanDef.setSource(this.sourceExtractor.extractSource(metadata, configClass.getResource()));
|
||||||
beanDef.setFactoryBeanName(configClass.getBeanName());
|
beanDef.setFactoryBeanName(configClass.getBeanName());
|
||||||
beanDef.setUniqueFactoryMethodName(metadata.getMethodName());
|
beanDef.setUniqueFactoryMethodName(metadata.getMethodName());
|
||||||
|
|
@ -209,13 +212,21 @@ class ConfigurationClassBeanDefinitionReader {
|
||||||
* Used in bean overriding cases where it's necessary to determine whether the bean
|
* Used in bean overriding cases where it's necessary to determine whether the bean
|
||||||
* definition was created externally.
|
* definition was created externally.
|
||||||
*/
|
*/
|
||||||
private class ConfigurationClassBeanDefinition extends RootBeanDefinition {
|
private class ConfigurationClassBeanDefinition extends RootBeanDefinition implements AnnotatedBeanDefinition {
|
||||||
|
|
||||||
public ConfigurationClassBeanDefinition() {
|
private AnnotationMetadata annotationMetadata;
|
||||||
|
|
||||||
|
public ConfigurationClassBeanDefinition(ConfigurationClass configClass) {
|
||||||
|
this.annotationMetadata = configClass.getMetadata();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConfigurationClassBeanDefinition(ConfigurationClassBeanDefinition original) {
|
private ConfigurationClassBeanDefinition(ConfigurationClassBeanDefinition original) {
|
||||||
super(original);
|
super(original);
|
||||||
|
this.annotationMetadata = original.annotationMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AnnotationMetadata getMetadata() {
|
||||||
|
return this.annotationMetadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue