这种写法比其他的方法好的一点是,当你需要修改参数名或者参数值的时候,只需要改一个地方就可以了,其他地方根本不用动,面向接口编程。
eureka-server.properties
archaius.dynamicPropertyFactory.Default_getInstanceId=inistanceid
archaius.dynamicPropertyFactory.DEFAULT_GETAPPNAME=getname
archaius.dynamicPropertyFactory.DEFAULT_APPGROUPNAME
package com.liwei.leshop.eureka.config;
/**
* 常量类
*/
public class Content {
public static final String URL_CONFIG_NAME = "archaius.dynamicPropertyFactory.URL_CONFIG";
public static final String DEFAULT_GETINSTANCEID = "archaius.dynamicPropertyFactory.Default_getInstanceId";
public static final String DEFAULT_GETAPPNAME = "archaius.dynamicPropertyFactory.DEFAULT_GETAPPNAME";
public static final String SYS_CONFIG_NAME = "archaius.dynamicPropertyFactory.SYS_CONFIG";
public static final String ENV_CONFIG_NAME = "archaius.dynamicPropertyFactory.ENV_CONFIG";
public static final String DEFAULT_APPGROUPNAME = "archaius.dynamicPropertyFactory.DEFAULT_APPGROUPNAME";
}
/**
* server编码
*/
public interface EurekaServiceConfig {
String getInstanceId();
String getAppname();
String getAppGroupName();
}
package com.liwei.leshop.eureka.config; import java.io.IOException; import java.io.InputStream; import java.util.Optional; import java.util.Properties; public class PropertiesInstanceConfig implements EurekaServiceConfig { public static void main(String[] args) { PropertiesInstanceConfig config = PropertiesInstanceConfig.getPropertiesInstanceConfig(); System.out.println( config.getAppGroupName()); } public static Properties properties = new Properties(); static volatile PropertiesInstanceConfig instance = null; public static PropertiesInstanceConfig getPropertiesInstanceConfig() { if (instance == null) { synchronized (PropertiesInstanceConfig.class) { if (instance == null) { instance = new PropertiesInstanceConfig(); } } } return instance; } private PropertiesInstanceConfig() { InputStream in = PropertiesInstanceConfig.class.getClassLoader().getResourceAsStream("eureka-server.properties"); try { properties.load(in); } catch (IOException e) { e.printStackTrace(); } } @Override public String getInstanceId() { return String.valueOf(Optional.ofNullable(properties.get(Content.DEFAULT_GETINSTANCEID)).orElse("Default_getInstanceId")); } @Override public String getAppname() { return String.valueOf(Optional.ofNullable( properties.get(Content.DEFAULT_GETAPPNAME)).orElse("Default_getAppname")); } @Override public String getAppGroupName() { return String.valueOf(Optional.ofNullable(properties.get(Content.DEFAULT_GETAPPNAME)).orElse("deflut")); } }