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

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




通过get方法的方式获取配置项信息的更多相关文章

  1. JAVAEE_Servlet_04_在service()方法中连接数据库获取表信息

    在service()方法中连接数据库获取表信息 代码: package com.shige.controller; import javax.servlet.*; import java.io.IOE ...

  2. Android简易实战教程--第四十七话《使用OKhttp回调方式获取网络信息》

    在之前的小案例中写过一篇使用HttpUrlConnection获取网络数据的例子.在OKhttp盛行的时代,当然要学会怎么使用它,本篇就对其基本使用做一个介绍,然后再使用它的接口回调的方式获取相同的数 ...

  3. Spring Boot 构建电商基础秒杀项目 (二) 使用 Spring MVC 方式获取用户信息

    SpringBoot构建电商基础秒杀项目 学习笔记 修改 DOMapper 在 UserPasswordDOMapper.xml 添加: <select id="selectByUse ...

  4. Android获取位置信息的方法总结

    1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综 ...

  5. c#反射机制学习和利用反射获取类型信息

    反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...

  6. Java通过webservice接口获取天气信息

    通过SOAP请求的方式获取天气信息并解析返回的XML文件. 参考: http://www.webxml.com.cn/WebServices/WeatherWS.asmx import java.io ...

  7. Android 使用GPS获取到经纬度后 无法在Android8.0上使用Geocoder类获取位置信息

    由于我的应用在获取到经纬度后在Android8.0不能使用如下代码获取位置信息.只好使用百度地图 WEB服务API 通过调接口的方式获取位置信息. Geocoder geocoder = new Ge ...

  8. 以最省内存的方式把大图片加载到内存及获取Exif信息和获取屏幕高度和宽度的新方法

    我们在加载图片时经常会遇到内存溢出的问题,图片太大,我们加载图片时,一般都是用的如下一般方法(加载本地图片): /** * 不作处理,去加载图片的方法,碰到比较大的图片会内存溢出 */ private ...

  9. tp框架获取常量信息、方法、命名空间

    获取系统常量信息: public function ShowInFo() { var_dump(get_defined_constants(true)); //如果参数为true,则分类显示 } 在这 ...

随机推荐

  1. CAD_DWG图Web可视化一站式解决方案-唯杰地图-vjmap

    背景 DWG图是AutoCAD是私有格式,只能在CAD软件上编辑查看,如何发布至Web上做数据展示,GIS分析应用开发,一直是业内头疼的事情. 传统的办法采用的解析AutoCAD图形绘制,并封装成Ac ...

  2. appium启动ios系统上面的app需求的参数

    Appium启动APP至少需要7个参数  'platformVersion','deviceName'.'udid'.'bundleId'.'platformName'.'automationName ...

  3. 手摸手教你用 yapi-to-typescript生成Yapi的TypeScript数据类型

    一 背景 现代社会比较重视效率,本着这个思想宗旨,能用工具自动高效做的事情,就不要低质量的勤奋.yapi-to-typescript就是一款自动生成接口请求与响应的typescript数据类型定义的工 ...

  4. NX开发 刀路生成

    此段是可以生成程序的完整代码,只有从坐标(10,10,10)到(500,500,500)一根刀轨.motion_ptr->feed_value 的值为0时生成G00,非0时生成G01.此代码只有 ...

  5. PyCharm中目录directory与包package的区别及相关import详解

    一.概念介绍 在介绍目录directory与包package的区别之前,先理解一个概念---模块 模块的定义:本质就是以.py结尾的python文件,模块的目的是为了其他程序进行引用. 目录(Dire ...

  6. Scrum Meeting 10

    第10次例会报告 日期:2021年05月30日 会议主要内容概述: 目前组员均无暇软工,进展较慢. 一.进度情况 我们采用日报的形式记录每个人的具体进度,链接Home · Wiki,如下记录仅为保证公 ...

  7. Beta实际开发与初始计划的比较

    零.说明 本篇博客为Beta阶段开始十天后,实际开发工作与初始计划的比较 截止至本篇博客发布为止,团队所有成员已完成计网考试,将在本周日进行充分的接口测试 一.比较 1.与初始计划对比 初始计划 实际 ...

  8. [Beta]the Agiles Scrum Meeting 9

    会议时间:2020.5.24 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 撰写技术博客 tq 实现评测机获取评测状态功能 评测部分增加更多评测指标 wjx ...

  9. [Beta]the Agiles Scrum Meeting 8

    会议时间:2020.5.22 21:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 帮助解决博客评分功能遇到的问题 tq 暂无 wjx 完成批量创建团队项目功能 班级 ...

  10. BUAA 软工 | 从计算机技术中探索艺术之路

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 掌握软件开发方法学和工程学知识 这个作业在哪个具体方面帮 ...