From 56bd4f4e999b9c39ca963b5c7fc3432817961dd9 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Sat, 12 Aug 2023 15:00:31 +0800 Subject: [PATCH] Polish --- .../{InetUtils.java => HostInfoHolder.java} | 29 +++++------- ... ObjectMapperCustomizerConfiguration.java} | 4 +- .../web/WebCommonAutoConfiguration.java | 2 +- .../listener/ConfigLoadedEventListener.java | 7 +-- ... => ConfigLoadedEventListenerAdaptor.java} | 27 ++++++++--- .../DubboValidationInitializer.java | 26 ----------- .../DubboConfigLoadedEventListener.java | 16 +++---- ...lizer.java => JSONLoggingInitializer.java} | 45 ++++++++++--------- ...ion.java => LoggingAutoConfiguration.java} | 12 ++--- ....java => DynamicLoggingConfiguration.java} | 20 ++++----- ... => LoggingConfigLoadedEventListener.java} | 32 ++++++------- ...Properties.java => LoggingProperties.java} | 2 +- .../main/resources/META-INF/spring.factories | 4 +- ...ot.autoconfigure.AutoConfiguration.imports | 2 +- .../xxl/XxlJobAutoConfiguration.java | 6 +-- .../xxl/properties/XxlJobProperties.java | 4 +- ...nStartupApplicationContextInitializer.java | 21 --------- .../main/resources/META-INF/spring.factories | 1 - 18 files changed, 106 insertions(+), 154 deletions(-) rename commons/common-util/src/main/java/com/schbrain/common/util/{InetUtils.java => HostInfoHolder.java} (81%) rename commons/web-common/src/main/java/com/schbrain/common/web/{ObjectMapperConfiguration.java => ObjectMapperCustomizerConfiguration.java} (80%) rename starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/{GenericConfigLoadedEventListener.java => ConfigLoadedEventListenerAdaptor.java} (53%) delete mode 100644 starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/initializer/DubboValidationInitializer.java rename starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/{LoggerConfigurationInitializer.java => JSONLoggingInitializer.java} (79%) rename starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/{LoggerAutoConfiguration.java => LoggingAutoConfiguration.java} (71%) rename starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/{DynamicLoggerConfiguration.java => DynamicLoggingConfiguration.java} (52%) rename starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/{LoggerConfigLoadedEventListener.java => LoggingConfigLoadedEventListener.java} (74%) rename starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/{LoggerProperties.java => LoggingProperties.java} (92%) delete mode 100644 support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/startup/BufferingApplicationStartupApplicationContextInitializer.java diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/HostInfoHolder.java similarity index 81% rename from commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java rename to commons/common-util/src/main/java/com/schbrain/common/util/HostInfoHolder.java index a771c4d..f99d23a 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/InetUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/HostInfoHolder.java @@ -8,42 +8,33 @@ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.UnknownHostException; -import java.nio.ByteBuffer; import java.util.Enumeration; /** - * Copy from SpringCloud - * * @author liaozan * @since 2021/11/19 */ @Slf4j -public class InetUtils { +public class HostInfoHolder { - public static HostInfo findFirstNonLoopBackHostInfo() { + private static final HostInfo HOST_INFO = findFirstNonLoopBackHostInfo(); + + public static HostInfo getHostInfo() { + return HOST_INFO; + } + + private static HostInfo findFirstNonLoopBackHostInfo() { InetAddress address = findFirstNonLoopBackAddress(); if (address != null) { return convertAddress(address); } + log.warn("Cannot find first non-loopBack address, fallback to localhost"); HostInfo hostInfo = new HostInfo(); hostInfo.setHostname("localhost"); hostInfo.setIpAddress("127.0.0.1"); return hostInfo; } - public static int getIpAddressAsInt(HostInfo hostInfo) { - String host = hostInfo.getIpAddress(); - if (host == null) { - host = hostInfo.getHostname(); - } - try { - InetAddress inetAddress = InetAddress.getByName(host); - return ByteBuffer.wrap(inetAddress.getAddress()).getInt(); - } catch (final UnknownHostException e) { - throw new IllegalArgumentException(e); - } - } - private static InetAddress findFirstNonLoopBackAddress() { InetAddress result = null; try { @@ -101,4 +92,4 @@ public class InetUtils { } -} \ No newline at end of file +} diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperCustomizerConfiguration.java similarity index 80% rename from commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperConfiguration.java rename to commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperCustomizerConfiguration.java index ec754bd..a22538d 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/ObjectMapperCustomizerConfiguration.java @@ -11,10 +11,10 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; * @since 2023/8/9 */ @ConditionalOnClass(Jackson2ObjectMapperBuilder.class) -public class ObjectMapperConfiguration { +public class ObjectMapperCustomizerConfiguration { @Bean - public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { + public Jackson2ObjectMapperBuilderCustomizer longToStringSerializerJacksonCustomizer() { return builder -> builder.serializerByType(Long.class, LongToStringSerializer.instance); } diff --git a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java index 5c53825..1c768bd 100644 --- a/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java +++ b/commons/web-common/src/main/java/com/schbrain/common/web/WebCommonAutoConfiguration.java @@ -30,7 +30,7 @@ import java.util.List; ExceptionHandingConfiguration.class, ServletComponentConfiguration.class, CorsFilterConfiguration.class, - ObjectMapperConfiguration.class + ObjectMapperCustomizerConfiguration.class }) public class WebCommonAutoConfiguration { diff --git a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/ConfigLoadedEventListener.java b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/ConfigLoadedEventListener.java index 08a482b..66ecc6c 100644 --- a/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/ConfigLoadedEventListener.java +++ b/starters/apollo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/apollo/event/listener/ConfigLoadedEventListener.java @@ -17,9 +17,4 @@ public interface ConfigLoadedEventListener extends ApplicationListener implements ConfigLoadedEventListener { +public abstract class ConfigLoadedEventListenerAdaptor implements ConfigLoadedEventListener { protected final ResolvableType propertiesType; - protected Log log; + private T properties; - public GenericConfigLoadedEventListener() { + public ConfigLoadedEventListenerAdaptor() { this.propertiesType = ResolvableType.forInstance(this).getSuperType().getGeneric(0); } @Override public void onApplicationEvent(ConfigLoadedEvent event) { event.getSpringApplication().addInitializers(this); - if (propertiesType.isInstance(event.getSource())) { + if (propertiesType.isInstance(event.getSource()) && properties == null) { this.log = event.getDeferredLogFactory().getLog(getClass()); - this.onConfigLoaded(event, (T) event.getSource()); + this.properties = (T) event.getSource(); + this.onConfigLoaded(event, properties); } } + @Override + public final void initialize(ConfigurableApplicationContext applicationContext) { + onApplicationContextInitialized(applicationContext, properties); + } + + /** + * callback when config loaded + */ protected abstract void onConfigLoaded(ConfigLoadedEvent event, T configurableProperties); -} \ No newline at end of file + /** + * callback when application context initialized + */ + protected abstract void onApplicationContextInitialized(ConfigurableApplicationContext context, T properties); + +} diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/initializer/DubboValidationInitializer.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/initializer/DubboValidationInitializer.java deleted file mode 100644 index a772b74..0000000 --- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/initializer/DubboValidationInitializer.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.schbrain.framework.autoconfigure.dubbo.initializer; - -import com.schbrain.framework.autoconfigure.apollo.config.OrderedMapPropertySource; -import org.springframework.util.ClassUtils; - -/** - * 暂时以编程的方式配置参数校验。待所有服务都升级到指定版本时,再通过配置开启 - * - * @author liaozan - * @since 2023-07-04 - */ -public class DubboValidationInitializer { - - private static final String VALIDATION_FILTER_CLASS_NAME = "org.apache.dubbo.validation.filter.ValidationFilter"; - - private static final String PROVIDER_VALIDATION_PROPERTY = "dubbo.provider.validation"; - - public static void initialize(OrderedMapPropertySource propertySource) { - if (ClassUtils.isPresent(VALIDATION_FILTER_CLASS_NAME, DubboValidationInitializer.class.getClassLoader())) { - if (!propertySource.containsProperty(PROVIDER_VALIDATION_PROPERTY)) { - propertySource.addProperty(PROVIDER_VALIDATION_PROPERTY, Boolean.TRUE.toString()); - } - } - } - -} \ No newline at end of file diff --git a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboConfigLoadedEventListener.java b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboConfigLoadedEventListener.java index 5da8217..e756862 100644 --- a/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboConfigLoadedEventListener.java +++ b/starters/dubbo-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/dubbo/listener/DubboConfigLoadedEventListener.java @@ -2,8 +2,7 @@ package com.schbrain.framework.autoconfigure.dubbo.listener; import com.schbrain.framework.autoconfigure.apollo.config.OrderedMapPropertySource; import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; -import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericConfigLoadedEventListener; -import com.schbrain.framework.autoconfigure.dubbo.initializer.DubboValidationInitializer; +import com.schbrain.framework.autoconfigure.apollo.event.listener.ConfigLoadedEventListenerAdaptor; import com.schbrain.framework.autoconfigure.dubbo.properties.DubboProperties; import org.springframework.boot.SpringApplication; import org.springframework.context.ConfigurableApplicationContext; @@ -16,7 +15,7 @@ import static org.apache.dubbo.config.ConfigKeys.DUBBO_SCAN_BASE_PACKAGES; * @author liaozan * @since 2023-04-28 */ -public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventListener { +public class DubboConfigLoadedEventListener extends ConfigLoadedEventListenerAdaptor { @Override public int getOrder() { @@ -24,14 +23,13 @@ public class DubboConfigLoadedEventListener extends GenericConfigLoadedEventList } @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - applicationContext.addApplicationListener(new DubboConfigInitEventListener(applicationContext)); + protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) { + addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource()); } @Override - protected void onConfigLoaded(ConfigLoadedEvent event, DubboProperties properties) { - addRequiredProperties(event.getEnvironment(), event.getSpringApplication(), event.getPropertySource()); - DubboValidationInitializer.initialize(event.getPropertySource()); + protected void onApplicationContextInitialized(ConfigurableApplicationContext context, DubboProperties properties) { + context.addApplicationListener(new DubboConfigInitEventListener(context)); } private void addRequiredProperties(ConfigurableEnvironment environment, SpringApplication application, OrderedMapPropertySource propertySource) { @@ -44,4 +42,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/JSONLoggingInitializer.java similarity index 79% rename from starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerConfigurationInitializer.java rename to starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/JSONLoggingInitializer.java index 209bb50..73fa95b 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/JSONLoggingInitializer.java @@ -12,9 +12,10 @@ import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; import cn.hutool.json.JSONObject; import com.schbrain.common.util.ApplicationName; import com.schbrain.common.util.EnvUtils; -import com.schbrain.common.util.InetUtils.HostInfo; +import com.schbrain.common.util.HostInfoHolder; +import com.schbrain.common.util.HostInfoHolder.HostInfo; import com.schbrain.framework.autoconfigure.logger.logstash.EnhancedLogstashEncoder; -import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; +import com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties; import lombok.extern.slf4j.Slf4j; import net.logstash.logback.appender.LogstashTcpSocketAppender; import net.logstash.logback.encoder.LogstashEncoder; @@ -23,39 +24,42 @@ import org.apache.commons.collections4.IteratorUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.LoggerFactory; import org.springframework.boot.cloud.CloudPlatform; -import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.Environment; import org.springframework.util.CollectionUtils; import java.nio.file.Paths; import java.util.List; /** - * Enable the json logging, will be auto active when the application is running in cloudPlatform + * Enable the json logging, will be auto active when the application is running in CloudPlatform * * @author liaozan * @see CloudPlatform * @since 2021/12/11 */ @Slf4j -public class LoggerConfigurationInitializer { +public class JSONLoggingInitializer { - private final ConfigurableEnvironment environment; - private final LoggerProperties properties; - private final HostInfo hostInfo; private final String applicationName; + private final Environment environment; + private final LoggingProperties loggingProperties; private volatile boolean initialized; - public LoggerConfigurationInitializer(ConfigurableEnvironment environment, LoggerProperties properties, HostInfo hostInfo) { + private JSONLoggingInitializer(Environment environment, LoggingProperties loggingProperties) { this.environment = environment; - this.properties = properties; - this.hostInfo = hostInfo; + this.loggingProperties = loggingProperties; this.applicationName = ApplicationName.get(environment); } + public static void init(Environment environment, LoggingProperties properties) { + JSONLoggingInitializer initializer = new JSONLoggingInitializer(environment, properties); + initializer.init(); + } + public void init() { - if (properties == null) { - log.warn("logger properties is null"); + if (loggingProperties == null) { + log.warn("logging properties is null"); return; } if (initialized) { @@ -75,18 +79,18 @@ public class LoggerConfigurationInitializer { return; } - if (properties.isEnableJsonFileOutput()) { + if (loggingProperties.isEnableJsonFileOutput()) { Appender appender = buildFileAppender(context); logger.addAppender(appender); } - if (properties.isEnableJsonConsoleOutput()) { + if (loggingProperties.isEnableJsonConsoleOutput()) { Appender appender = buildConsoleAppender(context); logger.addAppender(appender); } - if (properties.isEnableJsonLogWriteToLogstash() || EnvUtils.runningOnCloudPlatform(environment)) { - if (StringUtils.isBlank(properties.getLogstashAddress())) { + if (loggingProperties.isEnableJsonLogWriteToLogstash() || EnvUtils.runningOnCloudPlatform(environment)) { + if (StringUtils.isBlank(loggingProperties.getLogstashAddress())) { log.warn("logstash address is unset, will NOT write log to logstash"); return; } @@ -98,7 +102,7 @@ public class LoggerConfigurationInitializer { private Appender buildLogstashAppender(LoggerContext context) { LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender(); appender.setContext(context); - appender.addDestination(properties.getLogstashAddress()); + appender.addDestination(loggingProperties.getLogstashAddress()); appender.setEncoder(createJsonEncoder(context)); appender.start(); return appender; @@ -127,6 +131,7 @@ public class LoggerConfigurationInitializer { } private String getCustomFields() { + HostInfo hostInfo = HostInfoHolder.getHostInfo(); JSONObject customFields = new JSONObject(); customFields.set("appName", applicationName); customFields.set("hostName", hostInfo.getHostname()); @@ -145,12 +150,12 @@ public class LoggerConfigurationInitializer { } private String getPathLocation(String path) { - return Paths.get(properties.getLogPath(), path).toString(); + return Paths.get(loggingProperties.getLogPath(), path).toString(); } private TimeBasedRollingPolicy createRollingPolicy(Context context, FileAppender appender) { TimeBasedRollingPolicy rollingPolicy = new TimeBasedRollingPolicy<>(); - rollingPolicy.setMaxHistory(properties.getMaxHistory()); + rollingPolicy.setMaxHistory(loggingProperties.getMaxHistory()); rollingPolicy.setFileNamePattern(getPathLocation("json/json-%d{yyyy-MM-dd}.log")); rollingPolicy.setContext(context); rollingPolicy.setParent(appender); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggingAutoConfiguration.java similarity index 71% rename from starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java rename to starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggingAutoConfiguration.java index 1470350..d9f058b 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggerAutoConfiguration.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/LoggingAutoConfiguration.java @@ -1,7 +1,7 @@ package com.schbrain.framework.autoconfigure.logger; -import com.schbrain.framework.autoconfigure.logger.apollo.DynamicLoggerConfiguration; -import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; +import com.schbrain.framework.autoconfigure.logger.apollo.DynamicLoggingConfiguration; +import com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Import; @@ -11,8 +11,8 @@ import org.springframework.context.annotation.Import; * @since 2021/11/19 */ @AutoConfiguration -@Import(DynamicLoggerConfiguration.class) -@EnableConfigurationProperties(LoggerProperties.class) -public class LoggerAutoConfiguration { +@Import(DynamicLoggingConfiguration.class) +@EnableConfigurationProperties(LoggingProperties.class) +public class LoggingAutoConfiguration { -} \ No newline at end of file +} diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggerConfiguration.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggingConfiguration.java similarity index 52% rename from starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggerConfiguration.java rename to starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggingConfiguration.java index 735c53f..3ccf2d6 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggerConfiguration.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/apollo/DynamicLoggingConfiguration.java @@ -2,7 +2,7 @@ package com.schbrain.framework.autoconfigure.logger.apollo; import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.ConfigService; -import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; +import com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.logging.LoggingSystem; @@ -14,22 +14,22 @@ import org.springframework.boot.logging.LoggingSystem; * @since 2021/11/19 **/ @Slf4j -public class DynamicLoggerConfiguration { +public class DynamicLoggingConfiguration { - public DynamicLoggerConfiguration(LoggingSystem loggingSystem, LoggerProperties loggerProperties) { - this.listenToLoggingLevelChange(loggingSystem, loggerProperties); + public DynamicLoggingConfiguration(LoggingSystem loggingSystem, LoggingProperties loggingProperties) { + this.listenToLoggingLevelChange(loggingSystem, loggingProperties); } - private void listenToLoggingLevelChange(LoggingSystem loggingSystem, LoggerProperties loggerProperties) { - String loggerNamespace = loggerProperties.getNamespace(); - if (StringUtils.isBlank(loggerNamespace)) { - log.debug("logger level reload is disabled"); + private void listenToLoggingLevelChange(LoggingSystem loggingSystem, LoggingProperties loggingProperties) { + String loggingNamespace = loggingProperties.getNamespace(); + if (StringUtils.isBlank(loggingNamespace)) { + log.debug("logging level reload is disabled"); return; } - log.debug("init logger level listener, logger namespace: {}", loggerNamespace); + log.debug("init logging level listener, logging namespace: {}", loggingNamespace); - Config config = ConfigService.getConfig(loggerNamespace); + Config config = ConfigService.getConfig(loggingNamespace); if (config == null) { return; } 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/LoggingConfigLoadedEventListener.java similarity index 74% rename from starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggerConfigLoadedEventListener.java rename to starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/listener/LoggingConfigLoadedEventListener.java index ece638c..230a697 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/LoggingConfigLoadedEventListener.java @@ -6,12 +6,12 @@ import com.ctrip.framework.apollo.ConfigFile; import com.ctrip.framework.apollo.ConfigService; import com.ctrip.framework.apollo.core.enums.ConfigFileFormat; import com.google.common.collect.Maps; -import com.schbrain.common.util.InetUtils; -import com.schbrain.common.util.InetUtils.HostInfo; +import com.schbrain.common.util.HostInfoHolder; +import com.schbrain.common.util.HostInfoHolder.HostInfo; import com.schbrain.framework.autoconfigure.apollo.event.ConfigLoadedEvent; -import com.schbrain.framework.autoconfigure.apollo.event.listener.GenericConfigLoadedEventListener; -import com.schbrain.framework.autoconfigure.logger.LoggerConfigurationInitializer; -import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; +import com.schbrain.framework.autoconfigure.apollo.event.listener.ConfigLoadedEventListenerAdaptor; +import com.schbrain.framework.autoconfigure.logger.JSONLoggingInitializer; +import com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties; import org.apache.commons.lang3.StringUtils; import org.springframework.boot.context.logging.LoggingApplicationListener; import org.springframework.boot.logging.LogFile; @@ -31,28 +31,24 @@ import static org.springframework.boot.context.logging.LoggingApplicationListene * @author liaozan * @since 2023-04-28 */ -public class LoggerConfigLoadedEventListener extends GenericConfigLoadedEventListener { - - private LoggerConfigurationInitializer loggerInitializer; +public class LoggingConfigLoadedEventListener extends ConfigLoadedEventListenerAdaptor { @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - loggerInitializer.init(); + protected void onConfigLoaded(ConfigLoadedEvent event, LoggingProperties properties) { + event.getPropertySource().addProperties(buildHostInfoProperties()); + configLoggingFileLocation(event.getEnvironment(), properties.getLogConfigNamespace()); } @Override - protected void onConfigLoaded(ConfigLoadedEvent event, LoggerProperties properties) { - HostInfo hostInfo = InetUtils.findFirstNonLoopBackHostInfo(); - Map hostInfoProperties = buildHostInfoProperties(hostInfo); - event.getPropertySource().addProperties(hostInfoProperties); - configLoggingFileLocation(event.getEnvironment(), properties.getLogConfigNamespace()); - this.loggerInitializer = new LoggerConfigurationInitializer(event.getEnvironment(), properties, hostInfo); + protected void onApplicationContextInitialized(ConfigurableApplicationContext context, LoggingProperties properties) { + JSONLoggingInitializer.init(context.getEnvironment(), properties); } /** - * hostInfo properties, for logging pattern + * hostInfo properties, for logging pattern, used in logback-spring.xml */ - private Map buildHostInfoProperties(HostInfo hostInfo) { + private Map buildHostInfoProperties() { + HostInfo hostInfo = HostInfoHolder.getHostInfo(); Map properties = Maps.newHashMapWithExpectedSize(2); properties.put("application.hostname", hostInfo.getHostname()); properties.put("application.ipAddress", hostInfo.getIpAddress()); diff --git a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggerProperties.java b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggingProperties.java similarity index 92% rename from starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggerProperties.java rename to starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggingProperties.java index 6abe135..0b48962 100644 --- a/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggerProperties.java +++ b/starters/logger-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/logger/properties/LoggingProperties.java @@ -13,7 +13,7 @@ import java.time.Duration; */ @Data @ConfigurationProperties(prefix = "schbrain.logging.file") -public class LoggerProperties implements ConfigurableProperties, PriorityOrdered { +public class LoggingProperties implements ConfigurableProperties, PriorityOrdered { public static final String DEFAULT_LOG_PATH = "/data/logs"; diff --git a/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring.factories b/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring.factories index a7e0b84..80a77a8 100644 --- a/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1,6 +1,6 @@ org.springframework.context.ApplicationContextInitializer=\ com.schbrain.framework.autoconfigure.logger.logback.LogbackTraceIdConfiguration org.springframework.context.ApplicationListener=\ - com.schbrain.framework.autoconfigure.logger.listener.LoggerConfigLoadedEventListener + com.schbrain.framework.autoconfigure.logger.listener.LoggingConfigLoadedEventListener com.schbrain.common.util.support.ConfigurableProperties=\ - com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties \ No newline at end of file + com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties diff --git a/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index fe3480c..d80613d 100644 --- a/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/starters/logger-spring-boot-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1 @@ -com.schbrain.framework.autoconfigure.logger.LoggerAutoConfiguration \ No newline at end of file +com.schbrain.framework.autoconfigure.logger.LoggingAutoConfiguration diff --git a/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/XxlJobAutoConfiguration.java b/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/XxlJobAutoConfiguration.java index 56af583..58e673e 100644 --- a/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/XxlJobAutoConfiguration.java +++ b/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/XxlJobAutoConfiguration.java @@ -1,7 +1,7 @@ package com.schbrain.framework.autoconfigure.xxl; import com.schbrain.common.util.ApplicationName; -import com.schbrain.framework.autoconfigure.logger.properties.LoggerProperties; +import com.schbrain.framework.autoconfigure.logger.properties.LoggingProperties; import com.schbrain.framework.autoconfigure.xxl.condition.XxlJobShouldAvailableCondition; import com.schbrain.framework.autoconfigure.xxl.properties.XxlJobProperties; import com.xxl.job.core.executor.XxlJobExecutor; @@ -25,7 +25,7 @@ public class XxlJobAutoConfiguration { @Bean(initMethod = "start", destroyMethod = "destroy") @ConditionalOnMissingBean(XxlJobExecutor.class) - public XxlJobSpringExecutor xxlJobSpringExecutor(XxlJobProperties xxlJobProperties, LoggerProperties loggingProperties) { + public XxlJobSpringExecutor xxlJobSpringExecutor(XxlJobProperties xxlJobProperties, LoggingProperties loggingProperties) { XxlJobSpringExecutor executor = new XxlJobSpringExecutor(); executor.setAdminAddresses(xxlJobProperties.getAdminAddresses()); executor.setIp(xxlJobProperties.getIp()); @@ -37,4 +37,4 @@ public class XxlJobAutoConfiguration { return executor; } -} \ No newline at end of file +} diff --git a/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/properties/XxlJobProperties.java b/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/properties/XxlJobProperties.java index 45d65d8..701a23b 100644 --- a/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/properties/XxlJobProperties.java +++ b/starters/xxl-job-spring-boot-starter/src/main/java/com/schbrain/framework/autoconfigure/xxl/properties/XxlJobProperties.java @@ -1,6 +1,6 @@ package com.schbrain.framework.autoconfigure.xxl.properties; -import com.schbrain.common.util.InetUtils; +import com.schbrain.common.util.HostInfoHolder; import com.schbrain.common.util.support.ConfigurableProperties; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -15,7 +15,7 @@ public class XxlJobProperties implements ConfigurableProperties { private String adminAddresses; - private String ip = InetUtils.findFirstNonLoopBackHostInfo().getIpAddress(); + private String ip = HostInfoHolder.getHostInfo().getIpAddress(); private int port = -1; diff --git a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/startup/BufferingApplicationStartupApplicationContextInitializer.java b/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/startup/BufferingApplicationStartupApplicationContextInitializer.java deleted file mode 100644 index aad2426..0000000 --- a/support/schbrain-spring-support/src/main/java/com/schbrain/framework/support/spring/startup/BufferingApplicationStartupApplicationContextInitializer.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.schbrain.framework.support.spring.startup; - -import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; -import org.springframework.context.ApplicationContextInitializer; -import org.springframework.context.ConfigurableApplicationContext; -import org.springframework.core.metrics.ApplicationStartup; - -/** - * @author liaozan - * @since 2023-06-12 - */ -public class BufferingApplicationStartupApplicationContextInitializer implements ApplicationContextInitializer { - - @Override - public void initialize(ConfigurableApplicationContext applicationContext) { - if (applicationContext.getApplicationStartup() == ApplicationStartup.DEFAULT) { - applicationContext.setApplicationStartup(new BufferingApplicationStartup(Integer.MAX_VALUE)); - } - } - -} \ No newline at end of file diff --git a/support/schbrain-spring-support/src/main/resources/META-INF/spring.factories b/support/schbrain-spring-support/src/main/resources/META-INF/spring.factories index 5529bbf..d6f7d7d 100644 --- a/support/schbrain-spring-support/src/main/resources/META-INF/spring.factories +++ b/support/schbrain-spring-support/src/main/resources/META-INF/spring.factories @@ -1,2 +1 @@ org.springframework.boot.env.EnvironmentPostProcessor=com.schbrain.framework.support.spring.env.DefaultPropertiesEnvironmentPostProcessor -org.springframework.context.ApplicationContextInitializer=com.schbrain.framework.support.spring.startup.BufferingApplicationStartupApplicationContextInitializer -- GitLab