From 7db3cbd03d8c1febd4214fb1565019af4054be25 Mon Sep 17 00:00:00 2001 From: Redkale Date: Wed, 6 Jul 2022 16:09:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Environment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/boot/Application.java | 12 ++++- .../java/org/redkale/util/Environment.java | 52 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/redkale/util/Environment.java diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index 12762ed4c..8fa81c981 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -111,6 +111,13 @@ public final class Application { */ public static final String RESNAME_APP_ASYNCGROUP = "APP_ASYNCGROUP"; + /** + * 环境变量, 类型:Environment + * + * @since 2.7.0 + */ + public static final String RESNAME_APP_ENV = "APP_ENV"; + /** * 当前Service所属的SNCP Server的地址 类型: SocketAddress、InetSocketAddress、String
*/ @@ -179,6 +186,8 @@ public final class Application { final Properties appProperties = new Properties(); + final Environment appEnvironment; + //第三方服务发现管理接口 //@since 2.1.0 final ClusterAgent clusterAgent; @@ -248,6 +257,7 @@ public final class Application { this.compileMode = compileMode; this.config = config; this.configFromCache = "true".equals(config.getValue("[config-from-cache]")); + this.appEnvironment = new Environment(this.appProperties); System.setProperty("redkale.version", Redkale.getDotedVersion()); final File root = new File(System.getProperty(RESNAME_APP_HOME)); @@ -291,7 +301,7 @@ public final class Application { this.resourceFactory.register(RESNAME_APP_CONF_DIR, File.class, confFile); this.resourceFactory.register(RESNAME_APP_CONF_DIR, Path.class, confFile.toPath()); } - + this.resourceFactory.register(RESNAME_APP_ENV, Environment.class, appEnvironment); { int nid = config.getIntValue("nodeid", 0); this.nodeid = nid; diff --git a/src/main/java/org/redkale/util/Environment.java b/src/main/java/org/redkale/util/Environment.java new file mode 100644 index 000000000..a9a456124 --- /dev/null +++ b/src/main/java/org/redkale/util/Environment.java @@ -0,0 +1,52 @@ +/* + */ +package org.redkale.util; + +import java.util.*; +import java.util.function.BiConsumer; + +/** + * 环境变量, 相当于只读的Properties + * + * 详情见: https://redkale.org + * + * @author zhangjx + * @since 2.7.0 + */ +public class Environment implements java.io.Serializable { + + private final Properties properties; + + public Environment() { + this(new Properties()); + } + + public Environment(Properties properties) { + this.properties = properties; + } + + public Set keySet() { + return (Set) properties.keySet(); + } + + public boolean containsKey(String key) { + return properties.containsKey(key); + } + + public String getProperty(String key) { + return properties.getProperty(key); + } + + public String getProperty(String key, String defaultValue) { + return properties.getProperty(key, defaultValue); + } + + public void forEach(BiConsumer action) { + properties.forEach((BiConsumer) action); + } + + @Override + public String toString() { + return properties.toString(); + } +}