Skip to content

Commit d6c85b3

Browse files
committed
Conditional registerSingleton to avoid duplication
1 parent 6737d0e commit d6c85b3

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

src/main/java/digital/pragmatech/testing/diagnostic/ContextDiagnosticApplicationInitializer.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public class ContextDiagnosticApplicationInitializer
1515
private static final Logger LOG =
1616
LoggerFactory.getLogger(ContextDiagnosticApplicationInitializer.class);
1717

18+
private static final String BEAN_CONTEXT_DIAGNOSTIC = "contextDiagnostic";
19+
1820
@Override
1921
public void initialize(ConfigurableApplicationContext applicationContext) {
2022
ContextDiagnostic contextDiagnostic = ContextDiagnostic.started();
@@ -23,9 +25,13 @@ public void initialize(ConfigurableApplicationContext applicationContext) {
2325
event -> {
2426
if (event instanceof ContextRefreshedEvent) {
2527
ContextDiagnostic completedDiagnostic = contextDiagnostic.completed();
26-
applicationContext
27-
.getBeanFactory()
28-
.registerSingleton("contextDiagnostic", completedDiagnostic);
28+
// avoid double registration of the same bean when listener was discovered via
29+
// spring.factories
30+
if (!applicationContext.getBeanFactory().containsSingleton(BEAN_CONTEXT_DIAGNOSTIC)) {
31+
applicationContext
32+
.getBeanFactory()
33+
.registerSingleton(BEAN_CONTEXT_DIAGNOSTIC, completedDiagnostic);
34+
}
2935
LOG.debug("Context Diagnostic Completed: {}", completedDiagnostic);
3036
}
3137
});

0 commit comments

Comments
 (0)