add OnceApplicationContextEventListener guarantees ApplicationEvent just one-time execution

This commit is contained in:
yanhom 2023-06-09 20:34:55 +08:00
parent c27b807530
commit 357b8202ea
30 changed files with 223 additions and 104 deletions

View File

@ -17,18 +17,6 @@
package org.dromara.dynamictp.adapter.common;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.NotifyPlatform;
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
import org.dromara.dynamictp.common.entity.TpExecutorProps;
import org.dromara.dynamictp.common.entity.TpMainFields;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.StreamUtil;
import org.dromara.dynamictp.core.converter.ExecutorConverter;
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.core.support.ExecutorAdapter;
import com.github.dadiyang.equator.Equator;
import com.github.dadiyang.equator.FieldInfo;
import com.github.dadiyang.equator.GetterBaseEquator;
@ -39,11 +27,20 @@ import lombok.val;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationEvent;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.NotifyPlatform;
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
import org.dromara.dynamictp.common.entity.TpExecutorProps;
import org.dromara.dynamictp.common.entity.TpMainFields;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
import org.dromara.dynamictp.common.util.StreamUtil;
import org.dromara.dynamictp.core.converter.ExecutorConverter;
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
import org.dromara.dynamictp.core.support.ExecutorAdapter;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.GenericApplicationListener;
import org.springframework.core.Ordered;
import org.springframework.core.ResolvableType;
import java.util.Collections;
import java.util.List;
@ -51,9 +48,9 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ThreadPoolExecutor;
import static java.util.stream.Collectors.toList;
import static org.dromara.dynamictp.common.constant.DynamicTpConst.PROPERTIES_CHANGE_SHOW_STYLE;
import static org.dromara.dynamictp.core.notifier.manager.NotifyHelper.updateNotifyInfo;
import static java.util.stream.Collectors.toList;
/**
* AbstractDtpAdapter related
@ -63,43 +60,20 @@ import static java.util.stream.Collectors.toList;
* @since 1.0.6
*/
@Slf4j
public abstract class AbstractDtpAdapter implements DtpAdapter, GenericApplicationListener {
public abstract class AbstractDtpAdapter extends OnceApplicationContextEventListener implements DtpAdapter {
private static final Equator EQUATOR = new GetterBaseEquator();
protected final Map<String, ExecutorWrapper> executors = Maps.newHashMap();
@Override
public int getOrder() {
//Compatible with Spring4.x
return Ordered.LOWEST_PRECEDENCE;
}
@Override
public boolean supportsSourceType(Class<?> sourceType) {
//Compatible with Spring4.x
return true;
}
@Override
public boolean supportsEventType(ResolvableType resolvableType) {
Class<?> type = resolvableType.getRawClass();
if (type != null) {
return ContextRefreshedEvent.class.isAssignableFrom(type);
}
return false;
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextRefreshedEvent) {
try {
DtpProperties dtpProperties = ApplicationContextHolder.getBean(DtpProperties.class);
initialize();
refresh(dtpProperties);
} catch (Exception e) {
log.error("Init third party thread pool failed.", e);
}
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
try {
DtpProperties dtpProperties = ApplicationContextHolder.getBean(DtpProperties.class);
initialize();
refresh(dtpProperties);
} catch (Exception e) {
log.error("Init third party thread pool failed.", e);
}
}

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.adapter.common;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.event.AlarmCheckEvent;
import org.dromara.dynamictp.common.event.CollectEvent;
import org.dromara.dynamictp.common.event.RefreshEvent;

View File

@ -20,7 +20,7 @@ package org.dromara.dynamictp.adapter.dubbo.alibaba;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.common.store.DataStore;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import lombok.extern.slf4j.Slf4j;

View File

@ -17,12 +17,6 @@
package org.dromara.dynamictp.adapter.dubbo.apache;
import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.ReflectionUtil;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.commons.collections4.MapUtils;
@ -31,9 +25,14 @@ import org.apache.dubbo.common.extension.ExtensionLoader;
import org.apache.dubbo.common.store.DataStore;
import org.apache.dubbo.common.threadpool.manager.DefaultExecutorRepository;
import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;
import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.ReflectionUtil;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.springframework.context.ApplicationEvent;
import org.springframework.core.ResolvableType;
import java.util.Map;
import java.util.Objects;
@ -55,15 +54,6 @@ public class ApacheDubboDtpAdapter extends AbstractDtpAdapter {
private static final String EXECUTOR_SERVICE_COMPONENT_KEY = ExecutorService.class.getName();
@Override
public boolean supportsEventType(ResolvableType resolvableType) {
Class<?> type = resolvableType.getRawClass();
if (type != null) {
return ServiceBeanExportedEvent.class.isAssignableFrom(type);
}
return false;
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ServiceBeanExportedEvent) {

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.adapter.hystrix;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.TpExecutorProps;
import org.dromara.dynamictp.common.util.ReflectionUtil;
import com.netflix.hystrix.HystrixThreadPoolKey;

View File

@ -18,7 +18,7 @@
package org.dromara.dynamictp.adapter.hystrix;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.NotifyPlatform;
import org.dromara.dynamictp.common.entity.TpExecutorProps;
import org.dromara.dynamictp.common.properties.DtpProperties;

View File

@ -18,7 +18,7 @@
package org.dromara.dynamictp.adapter.motan;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.ReflectionUtil;

View File

@ -18,7 +18,7 @@
package org.dromara.dynamictp.adapter.okhttp3;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.common.properties.DtpProperties;
import lombok.extern.slf4j.Slf4j;

View File

@ -18,7 +18,7 @@
package org.dromara.dynamictp.adapter.rabbitmq;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.ReflectionUtil;
import org.dromara.dynamictp.core.support.ExecutorWrapper;

View File

@ -24,7 +24,7 @@ import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.C
import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.ConsumeMessageOrderlyService;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.util.ReflectionUtil;
import org.dromara.dynamictp.core.support.ExecutorWrapper;

View File

@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.dromara.dynamictp.common;
package org.dromara.dynamictp.common.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;

View File

@ -0,0 +1,114 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dromara.dynamictp.common.spring;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ApplicationContextEvent;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.context.event.ContextStoppedEvent;
import static org.springframework.util.ObjectUtils.nullSafeEquals;
/**
* The abstract class {@link ApplicationListener} for {@link ApplicationEvent} guarantees just one-time execution
* and prevents the event propagation in the hierarchical {@link ApplicationContext ApplicationContexts}
* @author yanhom
* @since 1.1.4
*/
@Slf4j
public abstract class OnceApplicationContextEventListener implements ApplicationContextAware, ApplicationListener<ApplicationEvent> {
private ApplicationContext applicationContext;
public OnceApplicationContextEventListener() {
}
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (isOriginalEventSource(event) && event instanceof ApplicationContextEvent) {
if (event instanceof ContextRefreshedEvent) {
onContextRefreshedEvent((ContextRefreshedEvent) event);
} else if (event instanceof ContextStartedEvent) {
onContextStartedEvent((ContextStartedEvent) event);
} else if (event instanceof ContextStoppedEvent) {
onContextStoppedEvent((ContextStoppedEvent) event);
} else if (event instanceof ContextClosedEvent) {
onContextClosedEvent((ContextClosedEvent) event);
}
}
}
/**
* The subclass overrides this method to handle {@link ContextRefreshedEvent}
*
* @param event {@link ContextRefreshedEvent}
*/
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
}
/**
* The subclass overrides this method to handle {@link ContextStartedEvent}
*
* @param event {@link ContextStartedEvent}
*/
protected void onContextStartedEvent(ContextStartedEvent event) {
}
/**
* The subclass overrides this method to handle {@link ContextStoppedEvent}
*
* @param event {@link ContextStoppedEvent}
*/
protected void onContextStoppedEvent(ContextStoppedEvent event) {
}
/**
* The subclass overrides this method to handle {@link ContextClosedEvent}
*
* @param event {@link ContextClosedEvent}
*/
protected void onContextClosedEvent(ContextClosedEvent event) {
}
/**
* Is original {@link ApplicationContext} as the event source
* @param event {@link ApplicationEvent}
* @return if original, return <code>true</code>, or <code>false</code>
*/
private boolean isOriginalEventSource(ApplicationEvent event) {
return nullSafeEquals(this.applicationContext, event.getSource());
}
@Override
public final void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
}

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.common.util;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.ServiceInstance;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

View File

@ -31,6 +31,7 @@ import org.dromara.dynamictp.common.ex.DtpException;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.queue.MemorySafeLinkedBlockingQueue;
import org.dromara.dynamictp.common.queue.VariableLinkedBlockingQueue;
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
import org.dromara.dynamictp.common.util.StreamUtil;
import org.dromara.dynamictp.core.converter.ExecutorConverter;
import org.dromara.dynamictp.core.notifier.manager.NoticeManager;
@ -41,7 +42,6 @@ import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.core.support.task.wrapper.TaskWrapper;
import org.dromara.dynamictp.core.support.task.wrapper.TaskWrappers;
import org.dromara.dynamictp.core.thread.DtpExecutor;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import java.util.Collections;
@ -63,7 +63,7 @@ import static org.dromara.dynamictp.common.constant.DynamicTpConst.PROPERTIES_CH
* @since 1.0.0
**/
@Slf4j
public class DtpRegistry implements ApplicationListener<ContextRefreshedEvent> {
public class DtpRegistry extends OnceApplicationContextEventListener {
/**
* Maintain all automatically registered and manually registered Executors(DtpExecutors and JUC ThreadPoolExecutors).
@ -327,7 +327,7 @@ public class DtpRegistry implements ApplicationListener<ContextRefreshedEvent> {
}
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
Set<String> remoteExecutors = Collections.emptySet();
if (CollectionUtils.isNotEmpty(dtpProperties.getExecutors())) {
remoteExecutors = dtpProperties.getExecutors().stream()

View File

@ -17,19 +17,19 @@
package org.dromara.dynamictp.core.monitor;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.ThreadPoolStats;
import org.dromara.dynamictp.common.event.AlarmCheckEvent;
import org.dromara.dynamictp.common.event.CollectEvent;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.spring.OnceApplicationContextEventListener;
import org.dromara.dynamictp.core.DtpRegistry;
import org.dromara.dynamictp.core.converter.ExecutorConverter;
import org.dromara.dynamictp.core.handler.CollectorHandler;
import org.dromara.dynamictp.core.notifier.manager.AlarmManager;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.dromara.dynamictp.core.thread.NamedThreadFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import java.util.Set;
@ -46,7 +46,7 @@ import static org.dromara.dynamictp.common.constant.DynamicTpConst.SCHEDULE_NOTI
* @since 1.0.0
**/
@Slf4j
public class DtpMonitor implements ApplicationListener<ContextRefreshedEvent> {
public class DtpMonitor extends OnceApplicationContextEventListener {
private static final ScheduledExecutorService MONITOR_EXECUTOR = new ScheduledThreadPoolExecutor(
1, new NamedThreadFactory("dtp-monitor", true));
@ -58,7 +58,7 @@ public class DtpMonitor implements ApplicationListener<ContextRefreshedEvent> {
}
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
protected void onContextRefreshedEvent(ContextRefreshedEvent event) {
MONITOR_EXECUTOR.scheduleWithFixedDelay(this::run,
0, dtpProperties.getMonitorInterval(), TimeUnit.SECONDS);
}

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.core.notifier.manager;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.em.NotifyTypeEnum;
import org.dromara.dynamictp.common.pattern.filter.Filter;
import org.dromara.dynamictp.common.pattern.filter.InvokerChain;

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.core.notifier.manager;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.em.NotifyItemEnum;
import org.dromara.dynamictp.common.entity.DtpExecutorProps;
import org.dromara.dynamictp.common.entity.NotifyItem;

View File

@ -21,7 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.em.ConfigFileTypeEnum;
import org.dromara.dynamictp.common.event.RefreshEvent;
import org.dromara.dynamictp.common.properties.DtpProperties;

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.core.spring;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.DeferredImportSelector;

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.core.support.task.runnable;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.timer.HashedWheelTimer;
import org.dromara.dynamictp.common.timer.Timeout;
import org.dromara.dynamictp.core.thread.DtpExecutor;

View File

@ -49,6 +49,11 @@
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>

View File

@ -20,11 +20,13 @@ package org.dromara.dynamictp.example;
import org.dromara.dynamictp.core.spring.EnableDynamicTp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* @author Redick01
*/
@EnableDynamicTp
@EnableFeignClients
@SpringBootApplication
public class CloudConsulExampleApplication {

View File

@ -20,6 +20,7 @@ package org.dromara.dynamictp.example.controller;
import org.dromara.dynamictp.core.DtpRegistry;
import org.dromara.dynamictp.core.support.task.runnable.NamedRunnable;
import lombok.extern.slf4j.Slf4j;
import org.dromara.dynamictp.example.feign.DynamicTpFeign;
import org.slf4j.MDC;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@ -40,6 +41,9 @@ public class TestController {
@Resource
private ThreadPoolExecutor dtpExecutor1;
@Resource
private DynamicTpFeign dynamicTpFeign;
@GetMapping("/dtp-consul-example/test")
public String test() throws InterruptedException {
task();

View File

@ -0,0 +1,38 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dromara.dynamictp.example.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* DynamicTpFeign related
*
* @author yanhom
* @since 1.0.0
**/
@FeignClient(name = "dynamicTpFeign", url = "https://dynamictp.cn")
public interface DynamicTpFeign {
/**
* test
* @return result
*/
@GetMapping(value = "/guide/use/quick-start.html")
String test();
}

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.extension.notify.email;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.em.NotifyItemEnum;
import org.dromara.dynamictp.common.em.NotifyPlatformEnum;
import org.dromara.dynamictp.common.entity.AlarmInfo;

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.logging;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

View File

@ -19,8 +19,8 @@ package org.dromara.dynamictp.starter.adapter.webserver.adapter;
import lombok.extern.slf4j.Slf4j;
import org.dromara.dynamictp.adapter.common.AbstractDtpAdapter;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.properties.DtpProperties;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.core.converter.ExecutorConverter;
import org.dromara.dynamictp.core.support.ExecutorWrapper;
import org.springframework.boot.web.context.WebServerApplicationContext;
@ -28,7 +28,7 @@ import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.core.ResolvableType;
import org.springframework.context.ApplicationListener;
import java.util.concurrent.Executor;
@ -40,16 +40,8 @@ import java.util.concurrent.Executor;
* @since 1.0.0
*/
@Slf4j
public abstract class AbstractWebServerDtpAdapter<A extends Executor> extends AbstractDtpAdapter {
@Override
public boolean supportsEventType(ResolvableType resolvableType) {
Class<?> type = resolvableType.getRawClass();
if (type != null) {
return WebServerInitializedEvent.class.isAssignableFrom(type);
}
return false;
}
public abstract class AbstractWebServerDtpAdapter<A extends Executor> extends AbstractDtpAdapter
implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent event) {

View File

@ -21,7 +21,7 @@ import cn.hutool.core.io.FileUtil;
import com.google.common.collect.Lists;
import lombok.val;
import org.apache.commons.collections4.MapUtils;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.entity.JvmStats;
import org.dromara.dynamictp.common.entity.Metrics;
import org.dromara.dynamictp.core.DtpRegistry;

View File

@ -18,7 +18,7 @@
package org.dromara.dynamictp.test.core.notify;
import com.google.common.collect.Lists;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.common.em.NotifyItemEnum;
import org.dromara.dynamictp.common.entity.NotifyItem;
import org.dromara.dynamictp.common.entity.NotifyPlatform;

View File

@ -17,7 +17,7 @@
package org.dromara.dynamictp.test.core.spring;
import org.dromara.dynamictp.common.ApplicationContextHolder;
import org.dromara.dynamictp.common.spring.ApplicationContextHolder;
import org.dromara.dynamictp.core.DtpRegistry;
import org.dromara.dynamictp.core.monitor.DtpMonitor;
import org.dromara.dynamictp.core.spring.DtpBaseBeanConfiguration;