Revert #processConfigBeanDefinitions to 3.0.x API
Revert signature of ConfigurationClassPostProcessor#processConfigBeanDefinitions to its form found in the 3.0.x line. Refactorings made during 3.1 development caused otherwise package-private types such as ConfigurationClassBeanDefinitionReader to escape through this public method, causing issues for STS as well as being a general design issue. Upon review, the refactorings could easily be backed out in favor of a simpler approach, and this has been done. This also means that ConfigurationClassBeanDefinitionReader can return to package-private visibility, and this change has been made as well. Issue: SPR-8200
This commit is contained in:
parent
6fcea8b99d
commit
4520ea8690
|
|
@ -64,7 +64,7 @@ import org.springframework.util.StringUtils;
|
||||||
* @since 3.0
|
* @since 3.0
|
||||||
* @see ConfigurationClassParser
|
* @see ConfigurationClassParser
|
||||||
*/
|
*/
|
||||||
public class ConfigurationClassBeanDefinitionReader {
|
class ConfigurationClassBeanDefinitionReader {
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(ConfigurationClassBeanDefinitionReader.class);
|
private static final Log logger = LogFactory.getLog(ConfigurationClassBeanDefinitionReader.class);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||||
import org.springframework.beans.factory.parsing.Location;
|
import org.springframework.beans.factory.parsing.Location;
|
||||||
|
|
@ -36,9 +34,7 @@ import org.springframework.beans.factory.parsing.Problem;
|
||||||
import org.springframework.beans.factory.parsing.ProblemReporter;
|
import org.springframework.beans.factory.parsing.ProblemReporter;
|
||||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||||
import org.springframework.core.annotation.AnnotationUtils;
|
import org.springframework.core.annotation.AnnotationUtils;
|
||||||
import org.springframework.core.env.ConfigurableEnvironment;
|
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.core.env.MutablePropertySources;
|
|
||||||
import org.springframework.core.env.PropertySource;
|
import org.springframework.core.env.PropertySource;
|
||||||
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.io.ResourceLoader;
|
||||||
import org.springframework.core.io.ResourcePropertySource;
|
import org.springframework.core.io.ResourcePropertySource;
|
||||||
|
|
@ -70,8 +66,6 @@ import org.springframework.util.StringUtils;
|
||||||
*/
|
*/
|
||||||
class ConfigurationClassParser {
|
class ConfigurationClassParser {
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(ConfigurationClassParser.class);
|
|
||||||
|
|
||||||
private final MetadataReaderFactory metadataReaderFactory;
|
private final MetadataReaderFactory metadataReaderFactory;
|
||||||
|
|
||||||
private final ProblemReporter problemReporter;
|
private final ProblemReporter problemReporter;
|
||||||
|
|
@ -333,12 +327,10 @@ class ConfigurationClassParser {
|
||||||
|
|
||||||
public CircularImportProblem(ConfigurationClass attemptedImport, Stack<ConfigurationClass> importStack, AnnotationMetadata metadata) {
|
public CircularImportProblem(ConfigurationClass attemptedImport, Stack<ConfigurationClass> importStack, AnnotationMetadata metadata) {
|
||||||
super(String.format("A circular @Import has been detected: " +
|
super(String.format("A circular @Import has been detected: " +
|
||||||
"Illegal attempt by @Configuration class '%s' to import class '%s' as '%s' is " +
|
"Illegal attempt by @Configuration class '%s' to import class '%s' as '%s' is " +
|
||||||
"already present in the current import stack [%s]",
|
"already present in the current import stack [%s]", importStack.peek().getSimpleName(),
|
||||||
importStack.peek().getSimpleName(), attemptedImport.getSimpleName(),
|
attemptedImport.getSimpleName(), attemptedImport.getSimpleName(), importStack),
|
||||||
attemptedImport.getSimpleName(), importStack),
|
new Location(importStack.peek().getResource(), metadata));
|
||||||
new Location(importStack.peek().getResource(), metadata)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -196,8 +196,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo
|
||||||
* Find and process all @Configuration classes in the given registry.
|
* Find and process all @Configuration classes in the given registry.
|
||||||
*/
|
*/
|
||||||
private void processConfigurationClasses(BeanDefinitionRegistry registry) {
|
private void processConfigurationClasses(BeanDefinitionRegistry registry) {
|
||||||
ConfigurationClassBeanDefinitionReader reader = getConfigurationClassBeanDefinitionReader(registry);
|
processConfigBeanDefinitions(registry);
|
||||||
processConfigBeanDefinitions(reader, registry);
|
|
||||||
enhanceConfigurationClasses((ConfigurableListableBeanFactory)registry);
|
enhanceConfigurationClasses((ConfigurableListableBeanFactory)registry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -213,7 +212,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo
|
||||||
* Build and validate a configuration model based on the registry of
|
* Build and validate a configuration model based on the registry of
|
||||||
* {@link Configuration} classes.
|
* {@link Configuration} classes.
|
||||||
*/
|
*/
|
||||||
public void processConfigBeanDefinitions(ConfigurationClassBeanDefinitionReader reader, BeanDefinitionRegistry registry) {
|
public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) {
|
||||||
Set<BeanDefinitionHolder> configCandidates = new LinkedHashSet<BeanDefinitionHolder>();
|
Set<BeanDefinitionHolder> configCandidates = new LinkedHashSet<BeanDefinitionHolder>();
|
||||||
for (String beanName : registry.getBeanDefinitionNames()) {
|
for (String beanName : registry.getBeanDefinitionNames()) {
|
||||||
BeanDefinition beanDef = registry.getBeanDefinition(beanName);
|
BeanDefinition beanDef = registry.getBeanDefinition(beanName);
|
||||||
|
|
@ -262,7 +261,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the model and create bean definitions based on its content
|
// Read the model and create bean definitions based on its content
|
||||||
reader.loadBeanDefinitions(parser.getConfigurationClasses());
|
this.getConfigurationClassBeanDefinitionReader(registry).loadBeanDefinitions(parser.getConfigurationClasses());
|
||||||
|
|
||||||
// Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes
|
// Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes
|
||||||
if (registry instanceof SingletonBeanRegistry) {
|
if (registry instanceof SingletonBeanRegistry) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue