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





  • 相关阅读:
    golang json字符串合并操作
    goland 无法跳转 struct等
    golang 中mgo update报错: The dollar ($) prefixed field '$inc' in '$inc' is not valid for storage.
    解决windows下使用vscode没有函数提示的问题
    【转载,实测好用】gitlab结合sourcetree使用
    C++单继承、多继承情况下的虚函数表分析
    Linux 日志文件管理——限制大小
    C++ RCSP智能指针简单实现与应用
    Makefile模板(C++)
    Git关于pull,commit,push的总结
  • 原文地址:https://www.cnblogs.com/q1359720840/p/14815105.html
Copyright © 2011-2022 走看看