From 40f75714335d3fd6a70d2b113e83ef17675c61c5 Mon Sep 17 00:00:00 2001 From: linyimin0812 Date: Thu, 3 Aug 2023 01:19:31 +0800 Subject: [PATCH] feat: health check upgrade --- .../core/monitor/ApplicationRunMonitor.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 spring-profiler-core/src/main/java/io/github/linyimin0812/profiler/core/monitor/ApplicationRunMonitor.java diff --git a/spring-profiler-core/src/main/java/io/github/linyimin0812/profiler/core/monitor/ApplicationRunMonitor.java b/spring-profiler-core/src/main/java/io/github/linyimin0812/profiler/core/monitor/ApplicationRunMonitor.java new file mode 100644 index 0000000..2c8a566 --- /dev/null +++ b/spring-profiler-core/src/main/java/io/github/linyimin0812/profiler/core/monitor/ApplicationRunMonitor.java @@ -0,0 +1,60 @@ +package io.github.linyimin0812.profiler.core.monitor; + +import io.github.linyimin0812.profiler.api.EventListener; +import io.github.linyimin0812.profiler.api.event.AtExitEvent; +import io.github.linyimin0812.profiler.api.event.Event; +import io.github.linyimin0812.profiler.common.logger.LogFactory; +import io.github.linyimin0812.profiler.core.container.IocContainer; +import org.kohsuke.MetaInfServices; +import org.slf4j.Logger; + +import java.util.Collections; +import java.util.List; + +/** + * @author yiminlin + **/ +@MetaInfServices +public class ApplicationRunMonitor implements EventListener { + + private final Logger logger = LogFactory.getStartupLogger(); + + @Override + public boolean filter(String className) { + return "org.springframework.boot.SpringApplication".equals(className); + } + + @Override + public boolean filter(String methodName, String[] methodTypes) { + + if (!"run".equals(methodName) || methodTypes == null || methodTypes.length != 2) { + return false; + } + + return "java.lang.Class[]".equals(methodTypes[0]) && "java.lang.String[]".equals(methodTypes[1]); + } + + @Override + public void onEvent(Event event) { + if (! (event instanceof AtExitEvent)) { + return; + } + + IocContainer.stop(); + } + + @Override + public List listen() { + return Collections.singletonList(Event.Type.AT_EXIT); + } + + @Override + public void start() { + logger.info("=============ApplicationRunMonitor start============="); + } + + @Override + public void stop() { + logger.info("=============ApplicationRunMonitor stop============="); + } +}