diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java index fc2cf1ce6a3178d766fb223508a90c3e84a308c8..2f3b752d28ac248084f032b64ffce45b53a0d88a 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/GenericConfigLoadedEventListener.java @@ -3,6 +3,8 @@ package com.schbrain.framework.autoconfigure.apollo.event.listener; import com.schbrain.common.util.support.ConfigurableProperties; import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; import org.apache.commons.logging.Log; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.ResolvableType; /** @@ -10,7 +12,7 @@ import org.springframework.core.ResolvableType; * @since 2023-04-28 */ @SuppressWarnings("unchecked") -public abstract class GenericConfigLoadedEventListener implements ConfigLoadedEventListener { +public abstract class GenericConfigLoadedEventListener implements ConfigLoadedEventListener, ApplicationContextInitializer { protected final ResolvableType propertiesType; @@ -22,12 +24,18 @@ public abstract class GenericConfigLoadedEventListener implements ApplicationContextInitializer { +public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventListener { public static final String DUBBO_APPLICATION_NAME = "dubbo.application.name"; @@ -33,7 +32,6 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList @Override protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) { - event.getSpringApplication().addInitializers(this); addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource()); } @@ -50,4 +48,4 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList return application.getMainApplicationClass().getPackage().getName(); } -} +} \ No newline at end of file diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java index 95cdd8c240092a11dc988f8dfacee0a46689d8fe..6336cee8d80e229a433a15b4744d6947b5bb03ce 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java @@ -44,18 +44,25 @@ public class LoggerConfigurationInitializer { private final String applicationName; + private volatile boolean initialized; + public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) { this.environment = environment; this.properties = properties; this.hostInfo = hostInfo; this.applicationName = ApplicationName.get(environment); - this.init(); } public void init() { if (properties == null) { + log.warn("logger properties is null"); + return; + } + if (initialized) { + log.warn("{} is initialized", getClass().getName()); return; } + initialized = true; LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); for (Logger logger : context.getLoggerList()) { registerAppender(logger, context); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java index 619317b7619d851c42266ceb203761a82b3ce511..6b91c243743f048c74d53a88b9b5c0904692a918 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java @@ -15,6 +15,7 @@ import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; import org.springframework.boot.context.logging.LoggingApplicationListener; import org.springframework.boot.logging.LogFile; import org.springframework.boot.logging.LoggingSystem; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.util.StringUtils; @@ -30,6 +31,13 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene */ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventListener { + private LoggerConfigurationInitializer initializer; + + @Override + public void initialize(ConfigurableApplicationContext applicationContext) { + initializer.init(); + } + @Override protected void onConfigLoaded(ConfigLoadedEvent event, LoggerProperties properties) { ConfigurableEnvironment environment = event.getEnvironment(); @@ -37,7 +45,7 @@ public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventLis Map hostInfoProperties = buildHostInfoProperties(hostInfo); event.getPropertySource().addProperties(hostInfoProperties); configLoggingFileLocation(environment, properties.getLogConfigNamespace()); - new LoggerConfigurationInitializer(environment, properties, hostInfo).init(); + this.initializer = new LoggerConfigurationInitializer(environment, properties, hostInfo); } /**