From 995d10591b4ac1d78b29a92514d695512395b512 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 23 Mar 2023 22:55:25 +0100 Subject: [PATCH] GH-169 - More defensive bean definition declaration for the ApplicationStartedEvent listener. Altered the bean definition to rather only refer to a ListableBeanFactory and only lookup the ApplicationModulesRuntime and ApplicationModuleListeners when the ApplicationStartedEvent is handled. --- .../SpringModulithRuntimeAutoConfiguration.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/autoconfigure/SpringModulithRuntimeAutoConfiguration.java b/spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/autoconfigure/SpringModulithRuntimeAutoConfiguration.java index a53a9b56..8f1136ed 100644 --- a/spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/autoconfigure/SpringModulithRuntimeAutoConfiguration.java +++ b/spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/autoconfigure/SpringModulithRuntimeAutoConfiguration.java @@ -15,13 +15,13 @@ */ package org.springframework.modulith.runtime.autoconfigure; -import java.util.List; import java.util.concurrent.Future; import java.util.function.Supplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.support.AopUtils; +import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -73,14 +73,13 @@ class SpringModulithRuntimeAutoConfiguration { } @Bean - ApplicationListener applicationModuleInitialzingListener(ApplicationModulesRuntime runtime, - List initializers) { + ApplicationListener applicationModuleInitializingListener(ListableBeanFactory beanFactory) { return event -> { - var modules = runtime.get(); + var modules = beanFactory.getBean(ApplicationModulesRuntime.class).get(); - initializers.stream() // + beanFactory.getBeanProvider(ApplicationModuleInitializer.class).stream() // .sorted(modules.getComparator()) // .map(it -> LOGGER.isDebugEnabled() ? new LoggingApplicationModuleInitializerAdapter(it, modules) : it) .forEach(ApplicationModuleInitializer::initialize);