zoukankan      html  css  js  c++  java
  • 通过get方法的方式获取配置项信息

    这种写法比其他的方法好的一点是,当你需要修改参数名或者参数值的时候,只需要改一个地方就可以了,其他地方根本不用动,面向接口编程。

    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"));
        }
    }





  • 相关阅读:
    JS编码解码详解
    web的几种返回顶部
    图片的懒加载的两种效果
    获取两个日期差
    C#虚方法
    依赖注入(DI)和Ninject
    在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
    PetShop的系统架构设计
    C#综合揭秘——细说多线程(下)
    C# Socket编程(4)初识Socket和数据流
  • 原文地址:https://www.cnblogs.com/q1359720840/p/14815105.html
Copyright © 2011-2022 走看看