|
|
|
@ -31,14 +31,11 @@ import java.util.Set; |
|
|
|
import org.apache.commons.logging.Log; |
|
|
|
import org.apache.commons.logging.Log; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.beans.BeansException; |
|
|
|
import org.springframework.beans.BeansException; |
|
|
|
import org.springframework.beans.CachedIntrospectionResults; |
|
|
|
|
|
|
|
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; |
|
|
|
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; |
|
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; |
|
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; |
|
|
|
import org.springframework.boot.SpringApplication; |
|
|
|
import org.springframework.boot.SpringApplication; |
|
|
|
import org.springframework.boot.bind.PropertiesConfigurationFactory; |
|
|
|
|
|
|
|
import org.springframework.boot.bind.PropertySourcesPropertyValues; |
|
|
|
import org.springframework.boot.bind.PropertySourcesPropertyValues; |
|
|
|
import org.springframework.boot.bind.RelaxedDataBinder; |
|
|
|
import org.springframework.boot.bind.RelaxedDataBinder; |
|
|
|
import org.springframework.boot.bind.RelaxedPropertyResolver; |
|
|
|
|
|
|
|
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; |
|
|
|
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; |
|
|
|
import org.springframework.boot.context.event.ApplicationPreparedEvent; |
|
|
|
import org.springframework.boot.context.event.ApplicationPreparedEvent; |
|
|
|
import org.springframework.boot.env.EnumerableCompositePropertySource; |
|
|
|
import org.springframework.boot.env.EnumerableCompositePropertySource; |
|
|
|
@ -51,8 +48,6 @@ import org.springframework.context.ConfigurableApplicationContext; |
|
|
|
import org.springframework.context.annotation.ConfigurationClassPostProcessor; |
|
|
|
import org.springframework.context.annotation.ConfigurationClassPostProcessor; |
|
|
|
import org.springframework.core.Ordered; |
|
|
|
import org.springframework.core.Ordered; |
|
|
|
import org.springframework.core.annotation.AnnotationAwareOrderComparator; |
|
|
|
import org.springframework.core.annotation.AnnotationAwareOrderComparator; |
|
|
|
import org.springframework.core.convert.ConversionService; |
|
|
|
|
|
|
|
import org.springframework.core.convert.support.DefaultConversionService; |
|
|
|
|
|
|
|
import org.springframework.core.env.ConfigurableEnvironment; |
|
|
|
import org.springframework.core.env.ConfigurableEnvironment; |
|
|
|
import org.springframework.core.env.EnumerablePropertySource; |
|
|
|
import org.springframework.core.env.EnumerablePropertySource; |
|
|
|
import org.springframework.core.env.MutablePropertySources; |
|
|
|
import org.springframework.core.env.MutablePropertySources; |
|
|
|
@ -65,7 +60,6 @@ import org.springframework.core.io.support.SpringFactoriesLoader; |
|
|
|
import org.springframework.util.Assert; |
|
|
|
import org.springframework.util.Assert; |
|
|
|
import org.springframework.util.ResourceUtils; |
|
|
|
import org.springframework.util.ResourceUtils; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
|
import org.springframework.validation.BindException; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* {@link EnvironmentPostProcessor} that configures the context environment by loading |
|
|
|
* {@link EnvironmentPostProcessor} that configures the context environment by loading |
|
|
|
@ -89,11 +83,6 @@ import org.springframework.validation.BindException; |
|
|
|
* and the 'spring.config.location' property can be used to specify alternative search |
|
|
|
* and the 'spring.config.location' property can be used to specify alternative search |
|
|
|
* locations or specific files. |
|
|
|
* locations or specific files. |
|
|
|
* <p> |
|
|
|
* <p> |
|
|
|
* Configuration properties are also bound to the {@link SpringApplication}. This makes it |
|
|
|
|
|
|
|
* possible to set {@link SpringApplication} properties dynamically, like the sources |
|
|
|
|
|
|
|
* ("spring.main.sources" - a CSV list) the flag to indicate a web environment |
|
|
|
|
|
|
|
* ("spring.main.web_environment=true") or the flag to switch off the banner |
|
|
|
|
|
|
|
* ("spring.main.show_banner=false"). |
|
|
|
|
|
|
|
* |
|
|
|
* |
|
|
|
* @author Dave Syer |
|
|
|
* @author Dave Syer |
|
|
|
* @author Phillip Webb |
|
|
|
* @author Phillip Webb |
|
|
|
@ -149,8 +138,6 @@ public class ConfigFileApplicationListener implements EnvironmentPostProcessor, |
|
|
|
|
|
|
|
|
|
|
|
private int order = DEFAULT_ORDER; |
|
|
|
private int order = DEFAULT_ORDER; |
|
|
|
|
|
|
|
|
|
|
|
private final ConversionService conversionService = new DefaultConversionService(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onApplicationEvent(ApplicationEvent event) { |
|
|
|
public void onApplicationEvent(ApplicationEvent event) { |
|
|
|
if (event instanceof ApplicationEnvironmentPreparedEvent) { |
|
|
|
if (event instanceof ApplicationEnvironmentPreparedEvent) { |
|
|
|
@ -182,19 +169,6 @@ public class ConfigFileApplicationListener implements EnvironmentPostProcessor, |
|
|
|
public void postProcessEnvironment(ConfigurableEnvironment environment, |
|
|
|
public void postProcessEnvironment(ConfigurableEnvironment environment, |
|
|
|
SpringApplication application) { |
|
|
|
SpringApplication application) { |
|
|
|
addPropertySources(environment, application.getResourceLoader()); |
|
|
|
addPropertySources(environment, application.getResourceLoader()); |
|
|
|
configureIgnoreBeanInfo(environment); |
|
|
|
|
|
|
|
bindToSpringApplication(environment, application); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void configureIgnoreBeanInfo(ConfigurableEnvironment environment) { |
|
|
|
|
|
|
|
if (System.getProperty( |
|
|
|
|
|
|
|
CachedIntrospectionResults.IGNORE_BEANINFO_PROPERTY_NAME) == null) { |
|
|
|
|
|
|
|
RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment, |
|
|
|
|
|
|
|
"spring.beaninfo."); |
|
|
|
|
|
|
|
Boolean ignore = resolver.getProperty("ignore", Boolean.class, Boolean.TRUE); |
|
|
|
|
|
|
|
System.setProperty(CachedIntrospectionResults.IGNORE_BEANINFO_PROPERTY_NAME, |
|
|
|
|
|
|
|
ignore.toString()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void onApplicationPreparedEvent(ApplicationEvent event) { |
|
|
|
private void onApplicationPreparedEvent(ApplicationEvent event) { |
|
|
|
@ -219,26 +193,6 @@ public class ConfigFileApplicationListener implements EnvironmentPostProcessor, |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Bind the environment to the {@link SpringApplication}. |
|
|
|
|
|
|
|
* @param environment the environment to bind |
|
|
|
|
|
|
|
* @param application the application to bind to |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
protected void bindToSpringApplication(ConfigurableEnvironment environment, |
|
|
|
|
|
|
|
SpringApplication application) { |
|
|
|
|
|
|
|
PropertiesConfigurationFactory<SpringApplication> binder = new PropertiesConfigurationFactory<SpringApplication>( |
|
|
|
|
|
|
|
application); |
|
|
|
|
|
|
|
binder.setTargetName("spring.main"); |
|
|
|
|
|
|
|
binder.setConversionService(this.conversionService); |
|
|
|
|
|
|
|
binder.setPropertySources(environment.getPropertySources()); |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
binder.bindPropertiesToTarget(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
catch (BindException ex) { |
|
|
|
|
|
|
|
throw new IllegalStateException("Cannot bind to SpringApplication", ex); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Add appropriate post-processors to post-configure the property-sources. |
|
|
|
* Add appropriate post-processors to post-configure the property-sources. |
|
|
|
* @param context the context to configure |
|
|
|
* @param context the context to configure |
|
|
|
|