From d9f68be1f24e121df933f0878543fdd2857a0584 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Thu, 7 Jul 2022 14:07:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../neutrino/core/bean/SimpleBeanFactory.java | 32 +++++++++++++++++++ .../core/context/ApplicationContext.java | 30 +++-------------- .../neutrino/proxy/server/ProxyServer.java | 2 +- 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/bean/SimpleBeanFactory.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/bean/SimpleBeanFactory.java index bcba7591..923374ee 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/bean/SimpleBeanFactory.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/bean/SimpleBeanFactory.java @@ -24,6 +24,10 @@ package fun.asgc.neutrino.core.bean; import com.google.common.collect.Lists; import fun.asgc.neutrino.core.annotation.*; import fun.asgc.neutrino.core.aop.Aop; +import fun.asgc.neutrino.core.aop.interceptor.ExceptionHandler; +import fun.asgc.neutrino.core.aop.interceptor.Filter; +import fun.asgc.neutrino.core.aop.interceptor.Interceptor; +import fun.asgc.neutrino.core.aop.interceptor.ResultAdvice; import fun.asgc.neutrino.core.exception.BeanException; import fun.asgc.neutrino.core.runner.ApplicationRunner; import fun.asgc.neutrino.core.util.*; @@ -31,6 +35,7 @@ import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -43,6 +48,11 @@ import java.util.stream.Collectors; @Slf4j public class SimpleBeanFactory extends AbstractBeanFactory { + /** + * 类集合 + */ + private Set> classes = new HashSet<>(); + public SimpleBeanFactory(String name) { super(name); } @@ -256,4 +266,26 @@ public class SimpleBeanFactory extends AbstractBeanFactory { } super.init(); } + + public void register(Set> classes) { + if (CollectionUtil.isEmpty(classes)) { + return; + } + this.classes.addAll(classes); + classes.stream() + .filter(item -> ClassUtil.isAnnotateWith(item, Component.class) + || Interceptor.class.isAssignableFrom(item) + || Filter.class.isAssignableFrom(item) + || ExceptionHandler.class.isAssignableFrom(item) + || ResultAdvice.class.isAssignableFrom(item) + ) + .forEach(clazz -> { + String beanName = TypeUtil.getDefaultVariableName(clazz); + Component component = ClassUtil.getAnnotation(clazz, Component.class); + if (null != component && StringUtil.notEmpty(component.value())) { + beanName = component.value(); + } + registerBean(clazz, beanName); + }); + } } diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationContext.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationContext.java index bca21159..437f1a41 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationContext.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationContext.java @@ -22,11 +22,6 @@ package fun.asgc.neutrino.core.context; -import fun.asgc.neutrino.core.annotation.Component; -import fun.asgc.neutrino.core.aop.interceptor.ExceptionHandler; -import fun.asgc.neutrino.core.aop.interceptor.Filter; -import fun.asgc.neutrino.core.aop.interceptor.Interceptor; -import fun.asgc.neutrino.core.aop.interceptor.ResultAdvice; import fun.asgc.neutrino.core.base.GlobalConfig; import fun.asgc.neutrino.core.bean.BeanFactoryAware; import fun.asgc.neutrino.core.bean.SimpleBeanFactory; @@ -37,6 +32,7 @@ import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import java.io.IOException; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -116,27 +112,11 @@ public class ApplicationContext implements LifeCycle { */ private void register() throws IOException, ClassNotFoundException { Set> classes = ClassUtil.scan(environment.getScanBasePackages()); - if (CollectionUtil.isEmpty(classes)) { - return; - } - classes.stream() - .filter(item -> ClassUtil.isAnnotateWith(item, Component.class) - || Interceptor.class.isAssignableFrom(item) - || Filter.class.isAssignableFrom(item) - || ExceptionHandler.class.isAssignableFrom(item) - || ResultAdvice.class.isAssignableFrom(item) - ) - .forEach(clazz -> { - String beanName = TypeUtil.getDefaultVariableName(clazz); - Component component = ClassUtil.getAnnotation(clazz, Component.class); - if (null != component && StringUtil.notEmpty(component.value())) { - beanName = component.value(); - } - this.applicationBeanFactory.registerBean(clazz, beanName); - }); - if (!applicationBeanFactory.hasBean(BeanManager.class)) { - applicationBeanFactory.registerBean(BeanManager.class); + if (null == classes) { + classes = new HashSet<>(); } + classes.add(BeanManager.class); + applicationBeanFactory.register(classes); } /** diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/ProxyServer.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/ProxyServer.java index fa1c16f8..5549f376 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/ProxyServer.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/ProxyServer.java @@ -34,7 +34,7 @@ import fun.asgc.neutrino.core.launcher.NeutrinoLauncher; public class ProxyServer { public static void main(String[] args) { - NeutrinoLauncher.run(ProxyServer.class, args); + NeutrinoLauncher.run(ProxyServer.class, args).sync(); } }