From aa709784c88994914bc10d81c98204d65f428208 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sun, 10 Jul 2022 07:26:11 +0800 Subject: [PATCH] =?UTF-8?q?Yml=E9=85=8D=E7=BD=AE=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C@Value=E6=B3=A8=E8=A7=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4=E5=80=BC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/AbstractConfigurationParser.java | 18 ++++++++++++++++-- .../core/context/ApplicationConfig.java | 2 ++ .../core/context/ExtensionServiceLoader.java | 2 +- .../core/web/WebApplicationServer.java | 4 ++++ .../asgc/neutrino/core/util/ClassUtilTest.java | 13 ++++++++++++- .../src/main/resources/application.yml | 3 ++- 6 files changed, 37 insertions(+), 5 deletions(-) diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/config/AbstractConfigurationParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/config/AbstractConfigurationParser.java index 05a77180..07652ebc 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/config/AbstractConfigurationParser.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/config/AbstractConfigurationParser.java @@ -37,6 +37,8 @@ import java.io.InputStream; import java.lang.reflect.Field; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @@ -44,6 +46,7 @@ import java.util.Set; * @date: 2022/6/16 */ public abstract class AbstractConfigurationParser implements ConfigurationParser { + private static Pattern pattern = Pattern.compile("\\$\\{[\\s\\p{Zs}]*(.*):(.*)[\\s\\p{Zs}]*\\}"); @Override public T parse(InputStream in, Class clazz) throws ConfigurationParserException { @@ -109,10 +112,21 @@ public abstract class AbstractConfigurationParser implements ConfigurationParser for (Field field : fields) { String key = field.getName(); Value value = field.getAnnotation(Value.class); + Object defaultValue = null; if (null != value && StringUtil.notEmpty(value.value())) { - key = value.value(); + Matcher m = pattern.matcher(value.value()); + if (m.find()) { + key = m.group(1); + defaultValue = m.group(2); + } else { + key = value.value(); + } } - boolean success = ReflectUtil.setFieldValue(field, instance, config.get(key)); + Object fieldValue = config.get(key); + if (null == fieldValue) { + fieldValue = defaultValue; + } + boolean success = ReflectUtil.setFieldValue(field, instance, fieldValue); if (!success) { try { Object o = parseProxy((Map)config.get(key), field.getType()); diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationConfig.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationConfig.java index 271ed222..b817d3f5 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationConfig.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ApplicationConfig.java @@ -47,6 +47,8 @@ public class ApplicationConfig { @Data public static class Http { + private Boolean enable; + @Value("${port:9999}") private Integer port; @Value("context-path") private String contextPath; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java index a18f4e5d..d6a030c0 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java @@ -50,7 +50,7 @@ public class ExtensionServiceLoader implements ApplicationRunner { return; } ApplicationConfig.Http http = rootApplicationConfig.getHttp(); - if (null == http || null == http.getPort()) { + if (null == http || null == http.getEnable() || !http.getEnable()) { return; } applicationBeanFactory.registerBean(WebApplicationServer.class); diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java index b3de768e..12869ec7 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java @@ -21,7 +21,9 @@ */ package fun.asgc.neutrino.core.web; +import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.annotation.Component; +import fun.asgc.neutrino.core.context.ApplicationConfig; import fun.asgc.neutrino.core.context.ApplicationRunner; import lombok.extern.slf4j.Slf4j; @@ -33,6 +35,8 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Component public class WebApplicationServer implements ApplicationRunner { + @Autowired + private ApplicationConfig rootApplicationConfig; @Override public void run(String[] args) { diff --git a/neutrino-core/src/test/java/fun/asgc/neutrino/core/util/ClassUtilTest.java b/neutrino-core/src/test/java/fun/asgc/neutrino/core/util/ClassUtilTest.java index 75a24b03..e8cd1a71 100644 --- a/neutrino-core/src/test/java/fun/asgc/neutrino/core/util/ClassUtilTest.java +++ b/neutrino-core/src/test/java/fun/asgc/neutrino/core/util/ClassUtilTest.java @@ -23,6 +23,9 @@ package fun.asgc.neutrino.core.util; import org.junit.Test; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * * @author: aoshiguchen @@ -32,7 +35,15 @@ public class ClassUtilTest { @Test public void hasNoArgsConstructor() { - System.out.println(ClassUtil.hasNoArgsConstructor(ClassUtilTest.class)); +// System.out.println(ClassUtil.hasNoArgsConstructor(ClassUtilTest.class)); + Pattern pattern = Pattern.compile("\\$\\{[\\s\\p{Zs}]*(.*):(.*)[\\s\\p{Zs}]*\\}"); + String s = "${ a:bb11 }"; + Matcher m = pattern.matcher(s); + if (m.find()) { + System.out.println(m.group(1)); + System.out.println(m.group(2)); + } + } } diff --git a/neutrino-proxy-server/src/main/resources/application.yml b/neutrino-proxy-server/src/main/resources/application.yml index 2a92b328..956f6d17 100644 --- a/neutrino-proxy-server/src/main/resources/application.yml +++ b/neutrino-proxy-server/src/main/resources/application.yml @@ -2,7 +2,8 @@ neutrino: application: name: neutrino-proxy-server http: - port: 8080 + enable: true + port: context-path: / proxy: