BeanDefinitionOverrideFailureAnalyzerTests Class — spring-boot Architecture
Architecture documentation for the BeanDefinitionOverrideFailureAnalyzerTests class in BeanDefinitionOverrideFailureAnalyzerTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/test/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzerTests.java lines 39–132
class BeanDefinitionOverrideFailureAnalyzerTests {
@Test
void analyzeBeanDefinitionOverrideException() {
FailureAnalysis analysis = performAnalysis(BeanOverrideConfiguration.class);
assertThat(analysis).isNotNull();
String description = analysis.getDescription();
assertThat(description).contains("The bean 'testBean', defined in " + SecondConfiguration.class.getName()
+ ", could not be registered.");
assertThat(description).contains(FirstConfiguration.class.getName());
}
@Test
void analyzeBeanDefinitionOverrideExceptionWithDefinitionsWithNoResourceDescription() {
FailureAnalysis analysis = performAnalysis((context) -> {
context.registerBean("testBean", String.class, (Supplier<String>) String::new);
context.registerBean("testBean", String.class, (Supplier<String>) String::new);
});
assertThat(analysis).isNotNull();
String description = analysis.getDescription();
assertThat(description)
.isEqualTo("The bean 'testBean' could not be registered. A bean with that name has already"
+ " been defined and overriding is disabled.");
}
private @Nullable FailureAnalysis performAnalysis(Class<?> configuration) {
BeanDefinitionOverrideException failure = createFailure(configuration);
assertThat(failure).isNotNull();
return new BeanDefinitionOverrideFailureAnalyzer().analyze(failure);
}
private @Nullable BeanDefinitionOverrideException createFailure(Class<?> configuration) {
try {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.setAllowBeanDefinitionOverriding(false);
context.register(configuration);
context.refresh();
context.close();
return null;
}
catch (BeanDefinitionOverrideException ex) {
return ex;
}
}
private @Nullable FailureAnalysis performAnalysis(
ApplicationContextInitializer<AnnotationConfigApplicationContext> initializer) {
BeanDefinitionOverrideException failure = createFailure(initializer);
assertThat(failure).isNotNull();
return new BeanDefinitionOverrideFailureAnalyzer().analyze(failure);
}
private @Nullable BeanDefinitionOverrideException createFailure(
ApplicationContextInitializer<AnnotationConfigApplicationContext> initializer) {
try {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.setAllowBeanDefinitionOverriding(false);
initializer.initialize(context);
context.refresh();
context.close();
return null;
}
catch (BeanDefinitionOverrideException ex) {
return ex;
}
}
@Configuration(proxyBeanMethods = false)
@Import({ FirstConfiguration.class, SecondConfiguration.class })
static class BeanOverrideConfiguration {
}
@Configuration(proxyBeanMethods = false)
static class FirstConfiguration {
@Bean
String testBean() {
return "test";
}
}
@Configuration(proxyBeanMethods = false)
static class SecondConfiguration {
@Bean
String testBean() {
return "test";
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free