|
|
|
@ -17,7 +17,6 @@ |
|
|
|
|
package org.springframework.context.annotation; |
|
|
|
|
|
|
|
|
|
import java.beans.PropertyDescriptor; |
|
|
|
|
import java.io.IOException; |
|
|
|
|
import java.util.HashSet; |
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
import java.util.LinkedHashSet; |
|
|
|
@ -65,7 +64,6 @@ import org.springframework.core.io.ResourceLoader; |
|
|
|
|
import org.springframework.core.type.AnnotationMetadata; |
|
|
|
|
import org.springframework.core.type.classreading.CachingMetadataReaderFactory; |
|
|
|
|
import org.springframework.core.type.classreading.MetadataReaderFactory; |
|
|
|
|
import org.springframework.core.type.classreading.SimpleMetadataReaderFactory; |
|
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
import org.springframework.util.ClassUtils; |
|
|
|
|
|
|
|
|
@ -379,38 +377,27 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static class ImportAwareBeanPostProcessor implements BeanPostProcessor, PriorityOrdered, BeanFactoryAware { |
|
|
|
|
private static class ImportAwareBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware, PriorityOrdered { |
|
|
|
|
|
|
|
|
|
private BeanFactory beanFactory; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int getOrder() { |
|
|
|
|
return Ordered.HIGHEST_PRECEDENCE; |
|
|
|
|
public void setBeanFactory(BeanFactory beanFactory) { |
|
|
|
|
this.beanFactory = beanFactory; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void setBeanFactory(BeanFactory beanFactory) { |
|
|
|
|
this.beanFactory = beanFactory; |
|
|
|
|
public int getOrder() { |
|
|
|
|
return Ordered.HIGHEST_PRECEDENCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Object postProcessBeforeInitialization(Object bean, String beanName) { |
|
|
|
|
if (bean instanceof ImportAware) { |
|
|
|
|
ImportRegistry importRegistry = this.beanFactory.getBean(IMPORT_REGISTRY_BEAN_NAME, ImportRegistry.class); |
|
|
|
|
String importingClass = importRegistry.getImportingClassFor(bean.getClass().getSuperclass().getName()); |
|
|
|
|
AnnotationMetadata importingClass = importRegistry.getImportingClassFor(bean.getClass().getSuperclass().getName()); |
|
|
|
|
if (importingClass != null) { |
|
|
|
|
try { |
|
|
|
|
AnnotationMetadata metadata = |
|
|
|
|
new SimpleMetadataReaderFactory().getMetadataReader(importingClass).getAnnotationMetadata(); |
|
|
|
|
((ImportAware) bean).setImportMetadata(metadata); |
|
|
|
|
} |
|
|
|
|
catch (IOException ex) { |
|
|
|
|
// should never occur -> at this point we know the class is present anyway
|
|
|
|
|
throw new IllegalStateException(ex); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
// no importing class was found
|
|
|
|
|
((ImportAware) bean).setImportMetadata(importingClass); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return bean; |
|
|
|
|