mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-17 16:39:29 +00:00
Merge branch '6.2.x'
This commit is contained in:
+11
-9
@@ -120,13 +120,7 @@ class ConfigurationClassBeanDefinitionReader {
|
||||
public void loadBeanDefinitions(Set<ConfigurationClass> configurationModel) {
|
||||
TrackedConditionEvaluator trackedConditionEvaluator = new TrackedConditionEvaluator();
|
||||
for (ConfigurationClass configClass : configurationModel) {
|
||||
try {
|
||||
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new IllegalStateException("Failed to load bean definitions for configuration class '" +
|
||||
configClass.getMetadata().getClassName() + "'", ex);
|
||||
}
|
||||
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,9 +161,17 @@ class ConfigurationClassBeanDefinitionReader {
|
||||
|
||||
ScopeMetadata scopeMetadata = scopeMetadataResolver.resolveScopeMetadata(configBeanDef);
|
||||
configBeanDef.setScope(scopeMetadata.getScopeName());
|
||||
String configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
|
||||
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
|
||||
|
||||
String configBeanName;
|
||||
try {
|
||||
configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
throw new IllegalStateException("Failed to generate bean name for imported class '" +
|
||||
configClass.getMetadata().getClassName() + "'", ex);
|
||||
}
|
||||
|
||||
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
|
||||
BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(configBeanDef, configBeanName);
|
||||
definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
|
||||
this.registry.registerBeanDefinition(definitionHolder.getBeanName(), definitionHolder.getBeanDefinition());
|
||||
|
||||
+14
-24
@@ -423,35 +423,28 @@ class ConfigurationClassPostProcessorTests {
|
||||
beanFactory.setAllowBeanDefinitionOverriding(false);
|
||||
ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
|
||||
|
||||
assertThatIllegalStateException()
|
||||
assertThatExceptionOfType(BeanDefinitionStoreException.class)
|
||||
.isThrownBy(() -> pp.postProcessBeanFactory(beanFactory))
|
||||
.withMessage("Failed to load bean definitions for configuration class '%s'", SingletonBeanConfig.class.getName())
|
||||
.havingCause()
|
||||
.isInstanceOf(BeanDefinitionStoreException.class)
|
||||
.withMessageContainingAll(
|
||||
"bar",
|
||||
"SingletonBeanConfig",
|
||||
TestBean.class.getName()
|
||||
);
|
||||
.withMessageContainingAll(
|
||||
"bar",
|
||||
"SingletonBeanConfig",
|
||||
TestBean.class.getName()
|
||||
);
|
||||
}
|
||||
|
||||
@Test // gh-25430
|
||||
void detectAliasOverride() {
|
||||
Class<?> configClass = SecondConfiguration.class;
|
||||
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
DefaultListableBeanFactory beanFactory = context.getDefaultListableBeanFactory();
|
||||
beanFactory.setAllowBeanDefinitionOverriding(false);
|
||||
context.register(FirstConfiguration.class, configClass);
|
||||
context.register(FirstConfiguration.class, SecondConfiguration.class);
|
||||
|
||||
assertThatIllegalStateException().isThrownBy(context::refresh)
|
||||
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
|
||||
.havingCause()
|
||||
.isExactlyInstanceOf(IllegalStateException.class)
|
||||
.withMessageContainingAll(
|
||||
"alias 'taskExecutor'",
|
||||
"name 'applicationTaskExecutor'",
|
||||
"bean definition 'taskExecutor'"
|
||||
);
|
||||
.withMessageContainingAll(
|
||||
"alias 'taskExecutor'",
|
||||
"name 'applicationTaskExecutor'",
|
||||
"bean definition 'taskExecutor'"
|
||||
);
|
||||
context.close();
|
||||
}
|
||||
|
||||
@@ -1245,11 +1238,8 @@ class ConfigurationClassPostProcessorTests {
|
||||
|
||||
@Test
|
||||
void nameClashBetweenConfigurationClassAndBean() {
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class))
|
||||
.withMessage("Failed to load bean definitions for configuration class '%s'", MyTestBean.class.getName())
|
||||
.havingCause()
|
||||
.isInstanceOf(BeanDefinitionStoreException.class);
|
||||
assertThatExceptionOfType(BeanDefinitionStoreException.class)
|
||||
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+2
-7
@@ -60,7 +60,6 @@ import org.springframework.context.support.GenericApplicationContext;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
|
||||
/**
|
||||
* Miscellaneous system tests covering {@link Bean} naming, aliases, scoping and
|
||||
@@ -220,12 +219,8 @@ class ConfigurationClassProcessingTests {
|
||||
|
||||
@Test // gh-33330
|
||||
void configurationWithMethodNameMismatch() {
|
||||
Class<?> configClass = ConfigWithMethodNameMismatch.class;
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> initBeanFactory(false, configClass))
|
||||
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
|
||||
.havingCause()
|
||||
.isInstanceOf(BeanDefinitionOverrideException.class);
|
||||
assertThatExceptionOfType(BeanDefinitionOverrideException.class)
|
||||
.isThrownBy(() -> initBeanFactory(false, ConfigWithMethodNameMismatch.class));
|
||||
}
|
||||
|
||||
@Test // gh-33920
|
||||
|
||||
Reference in New Issue
Block a user