|
|
|
|
@ -34,8 +34,10 @@ import org.apache.commons.logging.Log;
@@ -34,8 +34,10 @@ import org.apache.commons.logging.Log;
|
|
|
|
|
import org.apache.commons.logging.LogFactory; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
|
import org.springframework.beans.BeansException; |
|
|
|
|
import org.springframework.beans.CachedIntrospectionResults; |
|
|
|
|
import org.springframework.beans.factory.config.BeanDefinition; |
|
|
|
|
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; |
|
|
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; |
|
|
|
|
import org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader; |
|
|
|
|
import org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory; |
|
|
|
|
@ -58,6 +60,7 @@ import org.springframework.context.annotation.AnnotatedBeanDefinitionReader;
@@ -58,6 +60,7 @@ import org.springframework.context.annotation.AnnotatedBeanDefinitionReader;
|
|
|
|
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext; |
|
|
|
|
import org.springframework.context.annotation.AnnotationConfigUtils; |
|
|
|
|
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner; |
|
|
|
|
import org.springframework.context.annotation.ConfigurationClassPostProcessor; |
|
|
|
|
import org.springframework.context.support.AbstractApplicationContext; |
|
|
|
|
import org.springframework.context.support.GenericApplicationContext; |
|
|
|
|
import org.springframework.core.GenericTypeResolver; |
|
|
|
|
@ -390,6 +393,7 @@ public class SpringApplication {
@@ -390,6 +393,7 @@ public class SpringApplication {
|
|
|
|
|
if (this.lazyInitialization) { |
|
|
|
|
context.addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor()); |
|
|
|
|
} |
|
|
|
|
context.addBeanFactoryPostProcessor(new PropertySourceOrderingBeanFactoryPostProcessor(context)); |
|
|
|
|
// Load the sources
|
|
|
|
|
Set<Object> sources = getAllSources(); |
|
|
|
|
Assert.notEmpty(sources, "Sources must not be empty"); |
|
|
|
|
@ -1368,4 +1372,28 @@ public class SpringApplication {
@@ -1368,4 +1372,28 @@ public class SpringApplication {
|
|
|
|
|
return new LinkedHashSet<>(list); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* {@link BeanFactoryPostProcessor} to re-order our property sources below any |
|
|
|
|
* {@code @PropertySource} items added by the {@link ConfigurationClassPostProcessor}. |
|
|
|
|
*/ |
|
|
|
|
private static class PropertySourceOrderingBeanFactoryPostProcessor implements BeanFactoryPostProcessor, Ordered { |
|
|
|
|
|
|
|
|
|
private final ConfigurableApplicationContext context; |
|
|
|
|
|
|
|
|
|
PropertySourceOrderingBeanFactoryPostProcessor(ConfigurableApplicationContext context) { |
|
|
|
|
this.context = context; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int getOrder() { |
|
|
|
|
return Ordered.HIGHEST_PRECEDENCE; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { |
|
|
|
|
DefaultPropertiesPropertySource.moveToEnd(this.context.getEnvironment()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|