Skip to content

Commit a96558c

Browse files
committed
Revise commit 01acb80
See gh-35631
1 parent 1612b7c commit a96558c

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
@@ -117,13 +117,7 @@ class ConfigurationClassBeanDefinitionReader {
117117
public void loadBeanDefinitions(Set<ConfigurationClass> configurationModel) {
118118
TrackedConditionEvaluator trackedConditionEvaluator = new TrackedConditionEvaluator();
119119
for (ConfigurationClass configClass : configurationModel) {
120-
try {
121-
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
122-
}
123-
catch (Exception ex) {
124-
throw new IllegalStateException("Failed to load bean definitions for configuration class '" +
125-
configClass.getMetadata().getClassName() + "'", ex);
126-
}
120+
loadBeanDefinitionsForConfigurationClass(configClass, trackedConditionEvaluator);
127121
}
128122
}
129123

@@ -163,9 +157,17 @@ private void registerBeanDefinitionForImportedConfigurationClass(ConfigurationCl
163157

164158
ScopeMetadata scopeMetadata = scopeMetadataResolver.resolveScopeMetadata(configBeanDef);
165159
configBeanDef.setScope(scopeMetadata.getScopeName());
166-
String configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
167-
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
168160

161+
String configBeanName;
162+
try {
163+
configBeanName = this.importBeanNameGenerator.generateBeanName(configBeanDef, this.registry);
164+
}
165+
catch (IllegalArgumentException ex) {
166+
throw new IllegalStateException("Failed to generate bean name for imported class '" +
167+
configClass.getMetadata().getClassName() + "'", ex);
168+
}
169+
170+
AnnotationConfigUtils.processCommonDefinitionAnnotations(configBeanDef, metadata);
169171
BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(configBeanDef, configBeanName);
170172
definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
171173
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
@@ -410,35 +410,28 @@ void postProcessorFailsOnImplicitOverrideIfOverridingIsNotAllowed() {
410410
beanFactory.setAllowBeanDefinitionOverriding(false);
411411
ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
412412

413-
assertThatIllegalStateException()
413+
assertThatExceptionOfType(BeanDefinitionStoreException.class)
414414
.isThrownBy(() -> pp.postProcessBeanFactory(beanFactory))
415-
.withMessage("Failed to load bean definitions for configuration class '%s'", SingletonBeanConfig.class.getName())
416-
.havingCause()
417-
.isInstanceOf(BeanDefinitionStoreException.class)
418-
.withMessageContainingAll(
419-
"bar",
420-
"SingletonBeanConfig",
421-
TestBean.class.getName()
422-
);
415+
.withMessageContainingAll(
416+
"bar",
417+
"SingletonBeanConfig",
418+
TestBean.class.getName()
419+
);
423420
}
424421

425422
@Test // gh-25430
426423
void detectAliasOverride() {
427-
Class<?> configClass = SecondConfiguration.class;
428424
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
429425
DefaultListableBeanFactory beanFactory = context.getDefaultListableBeanFactory();
430426
beanFactory.setAllowBeanDefinitionOverriding(false);
431-
context.register(FirstConfiguration.class, configClass);
427+
context.register(FirstConfiguration.class, SecondConfiguration.class);
432428

433429
assertThatIllegalStateException().isThrownBy(context::refresh)
434-
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
435-
.havingCause()
436-
.isExactlyInstanceOf(IllegalStateException.class)
437-
.withMessageContainingAll(
438-
"alias 'taskExecutor'",
439-
"name 'applicationTaskExecutor'",
440-
"bean definition 'taskExecutor'"
441-
);
430+
.withMessageContainingAll(
431+
"alias 'taskExecutor'",
432+
"name 'applicationTaskExecutor'",
433+
"bean definition 'taskExecutor'"
434+
);
442435
context.close();
443436
}
444437

@@ -1171,11 +1164,8 @@ void beanLookupFromSameConfigurationClass() {
11711164

11721165
@Test
11731166
void nameClashBetweenConfigurationClassAndBean() {
1174-
assertThatIllegalStateException()
1175-
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class))
1176-
.withMessage("Failed to load bean definitions for configuration class '%s'", MyTestBean.class.getName())
1177-
.havingCause()
1178-
.isInstanceOf(BeanDefinitionStoreException.class);
1167+
assertThatExceptionOfType(BeanDefinitionStoreException.class)
1168+
.isThrownBy(() -> new AnnotationConfigApplicationContext(MyTestBean.class));
11791169
}
11801170

11811171
@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
@@ -223,12 +222,8 @@ void configurationWithNullReference() {
223222

224223
@Test // gh-33330
225224
void configurationWithMethodNameMismatch() {
226-
Class<?> configClass = ConfigWithMethodNameMismatch.class;
227-
assertThatIllegalStateException()
228-
.isThrownBy(() -> initBeanFactory(false, configClass))
229-
.withMessage("Failed to load bean definitions for configuration class '%s'", configClass.getName())
230-
.havingCause()
231-
.isInstanceOf(BeanDefinitionOverrideException.class);
225+
assertThatExceptionOfType(BeanDefinitionOverrideException.class)
226+
.isThrownBy(() -> initBeanFactory(false, ConfigWithMethodNameMismatch.class));
232227
}
233228

234229
@Test // gh-33920

0 commit comments

Comments
 (0)