Environment初始化逻辑调整,针对5级配置优化
This commit is contained in:
@@ -36,4 +36,5 @@ import java.lang.annotation.*;
|
||||
@NonIntercept
|
||||
public @interface NeutrinoApplication {
|
||||
String[] scanBasePackages() default {};
|
||||
String environmentVariableKey() default "";
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ import java.util.*;
|
||||
*/
|
||||
public class NvMap<K,V> implements Map<K,V> , Serializable, Cloneable {
|
||||
private HashMap<K,K> aliasMap;
|
||||
private HashMap<K,K> reverseAliasMap;
|
||||
private LinkedHashMap<K, V> _m;
|
||||
private HashMap<K, K> _k;
|
||||
private Locale locale;
|
||||
@@ -46,7 +45,6 @@ public class NvMap<K,V> implements Map<K,V> , Serializable, Cloneable {
|
||||
public static <K,V> NvMap<K,V> of(NvMap<K,V> parent) {
|
||||
NvMap<K,V> nvMap = new NvMap(parent);
|
||||
nvMap.aliasMap.putAll(parent.aliasMap);
|
||||
nvMap.reverseAliasMap.putAll(parent.reverseAliasMap);
|
||||
return nvMap;
|
||||
}
|
||||
|
||||
@@ -67,7 +65,6 @@ public class NvMap<K,V> implements Map<K,V> , Serializable, Cloneable {
|
||||
|
||||
public NvMap<K,V> setAlias(K k, K alias) {
|
||||
this.aliasMap.put(convertKey(alias), convertKey(k));
|
||||
this.reverseAliasMap.put(convertKey(k), convertKey(alias));
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -90,7 +87,6 @@ public class NvMap<K,V> implements Map<K,V> , Serializable, Cloneable {
|
||||
};
|
||||
this._k = new HashMap<>(initialCapacity);
|
||||
this.aliasMap = new HashMap<>(initialCapacity);
|
||||
this.reverseAliasMap = new HashMap<>(initialCapacity);
|
||||
this.locale = (locale != null ? locale : Locale.getDefault());
|
||||
}
|
||||
|
||||
@@ -244,7 +240,6 @@ public class NvMap<K,V> implements Map<K,V> , Serializable, Cloneable {
|
||||
res._m = (LinkedHashMap<K, V>) _m.clone();
|
||||
res._k = (HashMap<K, K>) _k.clone();
|
||||
res.aliasMap = (HashMap<K, K>) aliasMap.clone();
|
||||
res.reverseAliasMap = (HashMap<K, K>) reverseAliasMap.clone();
|
||||
res.locale = locale;
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -118,6 +118,7 @@ public final class NvMaps {
|
||||
} else if (fileType == FileTypeEnum.PROPERTIES) {
|
||||
Properties properties = new Properties();
|
||||
properties.load(in);
|
||||
load(properties);
|
||||
} else if (fileType == FileTypeEnum.JSON) {
|
||||
String content = FileUtil.readContentAsString(in);
|
||||
JSONObject jsonObject = JSONObject.parseObject(content);
|
||||
@@ -166,7 +167,7 @@ public final class NvMaps {
|
||||
}
|
||||
}
|
||||
|
||||
public NvMaps loadEnvironmentVariable() {
|
||||
public NvMaps loadEnvironmentVariable(String envKey) {
|
||||
String env = System.getenv(MetaDataConstant.ENVIRONMENT_VARIABLE_KEY);
|
||||
if (StringUtil.isEmpty(env)) {
|
||||
return this;
|
||||
|
||||
@@ -88,4 +88,37 @@ public interface MetaDataConstant {
|
||||
* 环境变量key
|
||||
*/
|
||||
String ENVIRONMENT_VARIABLE_KEY = "NEUTRINO_PROXY";
|
||||
|
||||
interface Config {
|
||||
String NEUTRINO_APPLICATION_NAME = "neutrino.application.name";
|
||||
String NEUTRINO_HTTP_ENABLE = "neutrino.http.enable";
|
||||
String NEUTRINO_HTTP_PORT = "neutrino.http.port";
|
||||
String NEUTRINO_HTTP_CONTEXT_PATH = "neutrino.http.context-path";
|
||||
String NEUTRINO_HTTP_MAX_CONTENT_LENGTH_DESC = "neutrino.http.max-content-length-desc";
|
||||
String NEUTRINO_HTTP_STATIC_RESOURCE_LOCATIONS = "neutrino.http.static-resource.locations";
|
||||
String NEUTRINO_PROXY_PROTOCOL_MAX_FRAME_LENGTH = "neutrino.proxy.protocol.max-frame-length";
|
||||
String NEUTRINO_PROXY_PROTOCOL_LENGTH_FIELD_OFFSET = "neutrino.proxy.protocol.length-field-offset";
|
||||
String NEUTRINO_PROXY_PROTOCOL_LENGTH_FIELD_LENGTH = "neutrino.proxy.protocol.length-field-length";
|
||||
String NEUTRINO_PROXY_PROTOCOL_INITIAL_BYTES_TO_STRIP = "neutrino.proxy.protocol.initial-bytes-to-strip";
|
||||
String NEUTRINO_PROXY_PROTOCOL_LENGTH_ADJUSTMENT = "neutrino.proxy.protocol.length-adjustment";
|
||||
String NEUTRINO_PROXY_PROTOCOL_READ_IDLE_TIME = "neutrino.proxy.protocol.read-idle-time";
|
||||
String NEUTRINO_PROXY_PROTOCOL_WRITE_IDLE_TIME = "neutrino.proxy.protocol.write-idle-time";
|
||||
String NEUTRINO_PROXY_PROTOCOL_ALL_IDLE_TIME_SECONDS = "neutrino.proxy.protocol.all-idle-time-seconds";
|
||||
String NEUTRINO_PROXY_SERVER_PORT = "neutrino.proxy.server.port";
|
||||
String NEUTRINO_PROXY_SERVER_SSL_PORT = "neutrino.proxy.server.ssl-port";
|
||||
String NEUTRINO_PROXY_SERVER_KEY_STORE_PASSWORD = "neutrino.proxy.server.key-store-password";
|
||||
String NEUTRINO_PROXY_SERVER_KEY_MANAGER_PASSWORD = "neutrino.proxy.server.key-manager-password";
|
||||
String NEUTRINO_PROXY_SERVER_JKS_PATH = "neutrino.proxy.server.jks-path";
|
||||
String NEUTRINO_PROXY_CLIENT_KEY_STORE_PASSWORD = "neutrino.proxy.client.key-store-password";
|
||||
String NEUTRINO_PROXY_CLIENT_JKS_PATH = "neutrino.proxy.client.jks-path";
|
||||
String NEUTRINO_PROXY_CLIENT_SERVER_IP = "neutrino.proxy.client.server-ip";
|
||||
String NEUTRINO_PROXY_CLIENT_SERVER_PORT = "neutrino.proxy.client.server-port";
|
||||
String NEUTRINO_PROXY_CLIENT_SSL_ENABLE = "neutrino.proxy.client.ssl-enable";
|
||||
String NEUTRINO_PROXY_CLIENT_OBTAIN_LICENSE_INTERVAL = "neutrino.proxy.client.obtain-license-interval";
|
||||
String NEUTRINO_DATA_DB_TYPE = "neutrino.data.db.type";
|
||||
String NEUTRINO_DATA_DB_URL = "neutrino.data.db.url";
|
||||
String NEUTRINO_DATA_DB_DRIVER_CLASS = "neutrino.data.db.driver-class";
|
||||
String NEUTRINO_DATA_DB_USERNAME = "neutrino.data.db.username";
|
||||
String NEUTRINO_DATA_DB_PASSWORD = "neutrino.data.db.password";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,10 @@
|
||||
|
||||
package fun.asgc.neutrino.core.context;
|
||||
|
||||
import fun.asgc.neutrino.core.base.NvMap;
|
||||
import fun.asgc.neutrino.core.base.NvMaps;
|
||||
import fun.asgc.neutrino.core.base.event.SimpleApplicationEventManager;
|
||||
import fun.asgc.neutrino.core.constant.MetaDataConstant;
|
||||
import fun.asgc.neutrino.core.util.ArrayUtil;
|
||||
import fun.asgc.neutrino.core.util.LockUtil;
|
||||
import fun.asgc.neutrino.core.util.StringUtil;
|
||||
@@ -34,6 +37,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static fun.asgc.neutrino.core.constant.MetaDataConstant.Config.*;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author: aoshiguchen
|
||||
@@ -74,11 +79,92 @@ public class Environment {
|
||||
* 默认的应用事件管理器
|
||||
*/
|
||||
private SimpleApplicationEventManager defaultApplicationEventManager;
|
||||
/**
|
||||
* 全局配置
|
||||
*/
|
||||
private NvMap nvMap;
|
||||
|
||||
public NvMap getNvMap() {
|
||||
return nvMap;
|
||||
}
|
||||
|
||||
public void loadNvMap(String envKey) throws Exception {
|
||||
// 创建NvMaps实例
|
||||
NvMaps nvMaps = NvMaps.of();
|
||||
|
||||
// 阶段1:设置内部默认值、别名
|
||||
nvMaps.setAlias(NEUTRINO_APPLICATION_NAME, "app.name");
|
||||
nvMaps.setKv(NEUTRINO_APPLICATION_NAME, "neutrino-app");
|
||||
|
||||
nvMaps.setAlias(NEUTRINO_HTTP_ENABLE, "http.enable");
|
||||
nvMaps.setKv(NEUTRINO_HTTP_ENABLE, true);
|
||||
nvMaps.setAlias(NEUTRINO_HTTP_PORT, "http.port");
|
||||
nvMaps.setKv(NEUTRINO_HTTP_PORT, 8080);
|
||||
nvMaps.setAlias(NEUTRINO_HTTP_CONTEXT_PATH, "http.context-path");
|
||||
nvMaps.setKv(NEUTRINO_HTTP_CONTEXT_PATH, "/");
|
||||
nvMaps.setAlias(NEUTRINO_HTTP_MAX_CONTENT_LENGTH_DESC, "http.max-content-length-desc");
|
||||
nvMaps.setKv(NEUTRINO_HTTP_MAX_CONTENT_LENGTH_DESC, "/");
|
||||
nvMaps.setAlias(NEUTRINO_HTTP_STATIC_RESOURCE_LOCATIONS, "http.static-resource");
|
||||
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_MAX_FRAME_LENGTH, "protocol.max-frame-length");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_LENGTH_FIELD_OFFSET, "protocol.length-field-offset");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_LENGTH_FIELD_LENGTH, "protocol.length-field-length");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_INITIAL_BYTES_TO_STRIP, "protocol.initial-bytes-to-strip");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_LENGTH_ADJUSTMENT, "protocol.length-adjustment");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_READ_IDLE_TIME, "protocol.read-idle-time");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_WRITE_IDLE_TIME, "protocol.write-idle-time");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_PROTOCOL_ALL_IDLE_TIME_SECONDS, "protocol.all-idle-time-seconds");
|
||||
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_SERVER_PORT, "proxy.port");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_SERVER_SSL_PORT, "proxy.ssl-port");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_SERVER_KEY_STORE_PASSWORD, "proxy.key-store-password");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_SERVER_KEY_MANAGER_PASSWORD, "proxy.key-manager-password");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_SERVER_JKS_PATH, "proxy.jks-path");
|
||||
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_KEY_STORE_PASSWORD, "proxy.key-store-password");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_JKS_PATH, "proxy.jks-path");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_SERVER_IP, "proxy.server-ip");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_SERVER_PORT, "proxy.server-port");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_SSL_ENABLE, "proxy.ssl-enable");
|
||||
nvMaps.setAlias(NEUTRINO_PROXY_CLIENT_OBTAIN_LICENSE_INTERVAL, "proxy.obtain-license-interval");
|
||||
|
||||
nvMaps.setAlias(NEUTRINO_DATA_DB_TYPE, "db.type");
|
||||
nvMaps.setAlias(NEUTRINO_DATA_DB_URL, "db.url");
|
||||
nvMaps.setAlias(NEUTRINO_DATA_DB_DRIVER_CLASS, "db.driver-class");
|
||||
nvMaps.setAlias(NEUTRINO_DATA_DB_USERNAME, "db.username");
|
||||
nvMaps.setAlias(NEUTRINO_DATA_DB_PASSWORD, "db.password");
|
||||
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 阶段2:内部配置文件
|
||||
nvMaps.loadFile(MetaDataConstant.CLASSPATH_RESOURCE_IDENTIFIER.concat("/application.yml"));
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 阶段3:环境变量
|
||||
if (!StringUtil.isEmpty(envKey)) {
|
||||
nvMaps.loadEnvironmentVariable(envKey);
|
||||
nvMaps.stageDone();
|
||||
}
|
||||
|
||||
// 结算4:外部配置文件
|
||||
nvMaps.loadFile("./.application.properties");
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 阶段5:启动参数
|
||||
nvMaps.loadMainArgs(this.mainArgs);
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 获取NvMap实例
|
||||
this.nvMap = nvMaps.getNvMap();
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数map
|
||||
*/
|
||||
@Deprecated
|
||||
private Map<String, String> mainArgsMap = null;
|
||||
|
||||
@Deprecated
|
||||
private Map<String, String> getMainArgsMap() {
|
||||
return LockUtil.doubleCheckProcessForNoException(
|
||||
() -> null == mainArgsMap,
|
||||
@@ -103,10 +189,12 @@ public class Environment {
|
||||
);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
private String getMainArgs(String key) {
|
||||
return getMainArgsMap().get(key);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Integer getMainArgsForInteger(String key, Integer defaultValue) {
|
||||
String val = getMainArgs(key);
|
||||
Integer res = null;
|
||||
@@ -120,6 +208,7 @@ public class Environment {
|
||||
return (null != res) ? res : defaultValue;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Boolean getMainArgsForBoolean(String key, Boolean defaultValue) {
|
||||
String val = getMainArgs(key);
|
||||
Boolean res = null;
|
||||
@@ -133,11 +222,13 @@ public class Environment {
|
||||
return (null != res) ? res : defaultValue;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public String getMainArgsForString(String key, String defaultValue) {
|
||||
String res = getMainArgs(key);
|
||||
return !StringUtil.isEmpty(res) ? res : defaultValue;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public String getMainArgsForString(String key) {
|
||||
return getMainArgsForString(key, null);
|
||||
}
|
||||
|
||||
@@ -118,7 +118,13 @@ public class NeutrinoLauncher {
|
||||
|
||||
// 加载应用配置
|
||||
environment.setConfig(ConfigUtil.getYmlConfig(ApplicationConfig.class));
|
||||
log.info("load ApplicationConfig finished.");
|
||||
try {
|
||||
environment.loadNvMap(neutrinoApplication.environmentVariableKey());
|
||||
log.info("load ApplicationConfig finished.");
|
||||
} catch (Exception e) {
|
||||
log.error("load ApplicationConfig err.", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,11 +32,12 @@ public class NvMapsTest {
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 阶段3:环境变量
|
||||
nvMaps.loadEnvironmentVariable();
|
||||
nvMaps.loadEnvironmentVariable("NEUTRINO_PROXY");
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 结算4:外部配置文件
|
||||
nvMaps.loadFile(NvMapsTest.class.getResource("/aaa.json").getPath());
|
||||
// nvMaps.loadFile(NvMapsTest.class.getResource("/aaa.json").getPath());
|
||||
nvMaps.loadFile(NvMapsTest.class.getResource("/aaa.properties").getPath());
|
||||
nvMaps.stageDone();
|
||||
|
||||
// 阶段5:启动参数
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
#neutrino.application.name=test
|
||||
app-name=test1
|
||||
@@ -30,7 +30,7 @@ import fun.asgc.neutrino.core.context.NeutrinoLauncher;
|
||||
* @author: aoshiguchen
|
||||
* @date: 2022/6/16
|
||||
*/
|
||||
@NeutrinoApplication
|
||||
@NeutrinoApplication(environmentVariableKey = "NeutrinoProxyClient")
|
||||
public class ProxyClient {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -32,7 +32,7 @@ import fun.asgc.neutrino.core.context.NeutrinoLauncher;
|
||||
* @date: 2022/6/16
|
||||
*/
|
||||
@EnableJob
|
||||
@NeutrinoApplication
|
||||
@NeutrinoApplication(environmentVariableKey = "NeutrinoProxyServer")
|
||||
public class ProxyServer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Reference in New Issue
Block a user