Skip to content

Commit 1c2a24a

Browse files
committed
Merge branch '6.2.x'
2 parents 8ec9ab6 + a96558c commit 1c2a24a

File tree

3 files changed

+27
-40
lines changed

3 files changed

+27
-40
lines changed

spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,7 @@ class ConfigurationClassBeanDefinitionReader {
120120
public void loadBeanDefinitions(Set<ConfigurationClass> configurationModel) {
121121
TrackedConditionEvaluator trackedConditionEvaluator = new TrackedConditionEvaluator();
122122
for (ConfigurationClass configClass : configurationModel) {
123-
try {
124-
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
125-
}
126-
catch (Exception ex) {
127-
throw new IllegalStateException("Failed to load bean definitions for configuration class '" +
128-
configClass.getMetadata().getClassName() + "'", ex);
129-
}
123+
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
130124
}
131125
}
132126

@@ -167,9 +161,17 @@ private void registerBeanDefinitionForImportedConfigurationClass(ConfigurationCl
167161

168162
ScopeMetadata scopeMetadata = scopeMetadataResolver.resolveScopeMetadata(configBeanDef);
169163
configBeanDef.setScope(scopeMetadata.getScopeName());
170-
String configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
171-
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
172164

165+
String configBeanName;
166+
try {
167+
configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
168+
}
169+
catch (IllegalArgumentException ex) {
170+
throw new IllegalStateException("Failed to generate bean name for imported class '" +
171+
configClass.getMetadata().getClassName() + "'", ex);
172+
}
173+
174+
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
173175
BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(configBeanDef, configBeanName);
174176
definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
175177
this.registry.registerBeanDefinition(definitionHolder.getBeanName(), definitionHolder.getBeanDefinition());

spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -423,35 +423,28 @@ void postProcessorFailsOnImplicitOverrideIfOverridingIsNotAllowed() {
423423
beanFactory.setAllowBeanDefinitionOverriding(false);
424424
ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
425425

426-
assertThatIllegalStateException()
426+
assertThatExceptionOfType(BeanDefinitionStoreException.class)
427427
.isThrownBy(() -> pp.postProcessBeanFactory(beanFactory))
428-
.withMessage("Failed to load bean definitions for configuration class '%s'", SingletonBeanConfig.class.getName())
429-
.havingCause()
430-
.isInstanceOf(BeanDefinitionStoreException.class)
431-
.withMessageContainingAll(
432-
"bar",
433-
"SingletonBeanConfig",
434-
TestBean.class.getName()
435-
);
428+
.withMessageContainingAll(
429+
"bar",
430+
"SingletonBeanConfig",
431+
TestBean.class.getName()
432+
);
436433
}
437434

438435
@Test // gh-25430
439436
void detectAliasOverride() {
440-
Class<?> configClass = SecondConfiguration.class;
441437
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
442438
DefaultListableBeanFactory beanFactory = context.getDefaultListableBeanFactory();
443439
beanFactory.setAllowBeanDefinitionOverriding(false);
444-
context.register(FirstConfiguration.class, configClass);
440+
context.register(FirstConfiguration.class, SecondConfiguration.class);
445441

446442
assertThatIllegalStateException().isThrownBy(context::refresh)
447-
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
448-
.havingCause()
449-
.isExactlyInstanceOf(IllegalStateException.class)
450-
.withMessageContainingAll(
451-
"alias 'taskExecutor'",
452-
"name 'applicationTaskExecutor'",
453-
"bean definition 'taskExecutor'"
454-
);
443+
.withMessageContainingAll(
444+
"alias 'taskExecutor'",
445+
"name 'applicationTaskExecutor'",
446+
"bean definition 'taskExecutor'"
447+
);
455448
context.close();
456449
}
457450

@@ -1245,11 +1238,8 @@ void beanLookupFromSameConfigurationClass() {
12451238

12461239
@Test
12471240
void nameClashBetweenConfigurationClassAndBean() {
1248-
assertThatIllegalStateException()
1249-
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class))
1250-
.withMessage("Failed to load bean definitions for configuration class '%s'", MyTestBean.class.getName())
1251-
.havingCause()
1252-
.isInstanceOf(BeanDefinitionStoreException.class);
1241+
assertThatExceptionOfType(BeanDefinitionStoreException.class)
1242+
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class));
12531243
}
12541244

12551245
@Test

spring-context/src/test/java/org/springframework/context/annotation/configuration/ConfigurationClassProcessingTests.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@
6060

6161
import static org.assertj.core.api.Assertions.assertThat;
6262
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
63-
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
6463

6564
/**
6665
* Miscellaneous system tests covering {@link Bean} naming, aliases, scoping and
@@ -220,12 +219,8 @@ void configurationWithNullReference() {
220219

221220
@Test // gh-33330
222221
void configurationWithMethodNameMismatch() {
223-
Class<?> configClass = ConfigWithMethodNameMismatch.class;
224-
assertThatIllegalStateException()
225-
.isThrownBy(() -> initBeanFactory(false, configClass))
226-
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
227-
.havingCause()
228-
.isInstanceOf(BeanDefinitionOverrideException.class);
222+
assertThatExceptionOfType(BeanDefinitionOverrideException.class)
223+
.isThrownBy(() -> initBeanFactory(false, ConfigWithMethodNameMismatch.class));
229224
}
230225

231226
@Test // gh-33920

0 commit comments

Comments
 (0)