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
|
||||
* @see ConfigurationClassParser
|
||||
*/
|
||||
public class ConfigurationClassBeanDefinitionReader {
|
||||
class ConfigurationClassBeanDefinitionReader {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(ConfigurationClassBeanDefinitionReader.class);
|
||||
|
||||
|
|
|
|||
|
|
@ -27,8 +27,6 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
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.factory.config.BeanDefinitionHolder;
|
||||
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.support.BeanDefinitionRegistry;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.core.env.MutablePropertySources;
|
||||
import org.springframework.core.env.PropertySource;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.core.io.ResourcePropertySource;
|
||||
|
|
@ -70,8 +66,6 @@ import org.springframework.util.StringUtils;
|
|||
*/
|
||||
class ConfigurationClassParser {
|
||||
|
||||
private static final Log logger = LogFactory.getLog(ConfigurationClassParser.class);
|
||||
|
||||
private final MetadataReaderFactory metadataReaderFactory;
|
||||
|
||||
private final ProblemReporter problemReporter;
|
||||
|
|
@ -334,11 +328,9 @@ class ConfigurationClassParser {
|
|||
public CircularImportProblem(ConfigurationClass attemptedImport, Stack<ConfigurationClass> importStack, AnnotationMetadata metadata) {
|
||||
super(String.format("A circular @Import has been detected: " +
|
||||
"Illegal attempt by @Configuration class '%s' to import class '%s' as '%s' is " +
|
||||
"already present in the current import stack [%s]",
|
||||
importStack.peek().getSimpleName(), attemptedImport.getSimpleName(),
|
||||
attemptedImport.getSimpleName(), importStack),
|
||||
new Location(importStack.peek().getResource(), metadata)
|
||||
);
|
||||
"already present in the current import stack [%s]", importStack.peek().getSimpleName(),
|
||||
attemptedImport.getSimpleName(), attemptedImport.getSimpleName(), importStack),
|
||||
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.
|
||||
*/
|
||||
private void processConfigurationClasses(BeanDefinitionRegistry registry) {
|
||||
ConfigurationClassBeanDefinitionReader reader = getConfigurationClassBeanDefinitionReader(registry);
|
||||
processConfigBeanDefinitions(reader, registry);
|
||||
processConfigBeanDefinitions(registry);
|
||||
enhanceConfigurationClasses((ConfigurableListableBeanFactory)registry);
|
||||
}
|
||||
|
||||
|
|
@ -213,7 +212,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo
|
|||
* Build and validate a configuration model based on the registry of
|
||||
* {@link Configuration} classes.
|
||||
*/
|
||||
public void processConfigBeanDefinitions(ConfigurationClassBeanDefinitionReader reader, BeanDefinitionRegistry registry) {
|
||||
public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) {
|
||||
Set<BeanDefinitionHolder> configCandidates = new LinkedHashSet<BeanDefinitionHolder>();
|
||||
for (String beanName : registry.getBeanDefinitionNames()) {
|
||||
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
|
||||
reader.loadBeanDefinitions(parser.getConfigurationClasses());
|
||||
this.getConfigurationClassBeanDefinitionReader(registry).loadBeanDefinitions(parser.getConfigurationClasses());
|
||||
|
||||
// Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes
|
||||
if (registry instanceof SingletonBeanRegistry) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue