diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzer.java index 3664695ef9f..ca536fcc9a7 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzer.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/BeanDefinitionOverrideFailureAnalyzer.java @@ -42,11 +42,15 @@ class BeanDefinitionOverrideFailureAnalyzer extends AbstractFailureAnalyzer { + context.registerBean("testBean", String.class, (Supplier) String::new); + context.registerBean("testBean", String.class, (Supplier) String::new); + }); + 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 FailureAnalysis performAnalysis(Class configuration) { BeanDefinitionOverrideException failure = createFailure(configuration); assertThat(failure).isNotNull(); @@ -63,6 +78,28 @@ public class BeanDefinitionOverrideFailureAnalyzerTests { } } + private FailureAnalysis performAnalysis( + ApplicationContextInitializer initializer) { + BeanDefinitionOverrideException failure = createFailure(initializer); + assertThat(failure).isNotNull(); + return new BeanDefinitionOverrideFailureAnalyzer().analyze(failure); + } + + private BeanDefinitionOverrideException createFailure( + ApplicationContextInitializer initializer) { + try { + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + context.setAllowBeanDefinitionOverriding(false); + initializer.initialize(context); + context.refresh(); + context.close(); + return null; + } + catch (BeanDefinitionOverrideException ex) { + return ex; + } + } + @Configuration @Import({ FirstConfiguration.class, SecondConfiguration.class }) static class BeanOverrideConfiguration {