From dd3656e559eed118a12aea6af335125f016bb09b Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Fri, 25 Nov 2022 11:59:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AFweb=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3=E6=94=AF=E6=8C=81=E5=90=AF=E5=8A=A8=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=8C=87=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../neutrino/core/context/Environment.java | 50 +++++++++++++++++++ .../core/web/context/WebContextHolder.java | 8 ++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/Environment.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/Environment.java index 8776c264..45645214 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/Environment.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/Environment.java @@ -23,11 +23,16 @@ package fun.asgc.neutrino.core.context; import fun.asgc.neutrino.core.base.event.SimpleApplicationEventManager; +import fun.asgc.neutrino.core.util.ArrayUtil; +import fun.asgc.neutrino.core.util.LockUtil; +import fun.asgc.neutrino.core.util.StringUtil; import fun.asgc.neutrino.core.util.SystemUtil; import lombok.Data; import lombok.experimental.Accessors; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @@ -69,4 +74,49 @@ public class Environment { * 默认的应用事件管理器 */ private SimpleApplicationEventManager defaultApplicationEventManager; + /** + * 参数map + */ + private Map mainArgsMap = null; + + private Map getMainArgsMap() { + return LockUtil.doubleCheckProcessForNoException( + () -> null == mainArgsMap, + this, + () -> { + Map map = new HashMap<>(); + if (ArrayUtil.notEmpty(mainArgs)) { + for (String param : mainArgs) { + if (!StringUtil.isEmpty(param)) { + int index = param.indexOf("="); + if (index > 0 && index < param.length() - 1) { + String key = param.substring(0, index); + String val = param.substring(index + 1); + map.put(key, val); + } + } + } + } + mainArgsMap = map; + }, + () -> mainArgsMap + ); + } + + private String getMainArgs(String key) { + return getMainArgsMap().get(key); + } + + public Integer getMainArgsForInteger(String key) { + String val = getMainArgs(key); + Integer res = null; + try { + if (!StringUtil.isEmpty(val)) { + res = Integer.valueOf(val); + } + } catch (Exception e) { + // ignore + } + return res; + } } diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java index fb1e21a0..d683fa21 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java @@ -28,6 +28,7 @@ import fun.asgc.neutrino.core.annotation.NonIntercept; import fun.asgc.neutrino.core.bean.BeanWrapper; import fun.asgc.neutrino.core.bean.factory.SimpleBeanFactory; import fun.asgc.neutrino.core.context.ApplicationConfig; +import fun.asgc.neutrino.core.context.Environment; import fun.asgc.neutrino.core.util.*; import fun.asgc.neutrino.core.web.annotation.RestController; import fun.asgc.neutrino.core.web.config.WebMvcConfigurer; @@ -59,6 +60,8 @@ public class WebContextHolder { private ApplicationConfig applicationConfig; @Autowired private SimpleBeanFactory applicationBeanFactory; + @Autowired + private Environment environment; @Init public void init() { @@ -68,7 +71,10 @@ public class WebContextHolder { initMaxContentLength(); initControllerBeanWrapperList(); initInterceptorRegistry(); - port = http.getPort(); + port = environment.getMainArgsForInteger("port"); + if (null == port) { + port = http.getPort(); + } } public static String getHttpContextPath() {