netflix

Netflix Archaius提供了一组精巧的功能,可将动态属性加载到应用程序中。

这篇博客文章只是我所了解的Archaius范围的文档,比我在这里所记录的内容要多得多,但这应该提供一个很好的开始:

默认行为

考虑一个简单的属性文件:

stringprop=propvalue
listprop=value1, value2, value3
mapprop=key1=value1, key2=value2
longprop=100

如果将这些条目放置在类路径中的config.properties文件中,那么以下测试将演示Archaius如何在代码中解析这些属性中的每一个:

@Test
public void testBasicStringProps() {DynamicStringProperty sampleProp = DynamicPropertyFactory.getInstance().getStringProperty("stringprop", "");assertThat(sampleProp.get(), equalTo("propvalue"));
}@Test
public void testBasicListProps() {DynamicStringListProperty listProperty = new DynamicStringListProperty("listprop", Collections.emptyList());assertThat(listProperty.get(), contains("value1", "value2", "value3"));
}@Test
public void testBasicMapProps() {DynamicStringMapProperty mapProperty = new DynamicStringMapProperty("mapprop", Collections.emptyMap());assertThat(mapProperty.getMap(), allOf(hasEntry("key1", "value1"), hasEntry("key2", "value2")));
}@Test
public void testBasicLongProperty() {DynamicLongProperty longProp = DynamicPropertyFactory.getInstance().getLongProperty("longprop", 1000);assertThat(longProp.get(), equalTo(100L));
}

从类路径中的非默认文件加载属性

因此,现在,我们如何处理要从具有不同名称的文件中加载内容的情况,比如说newconfig.properties,但仍在类路径中可用。 以下是一种方法:

@Before
public void setUp() throws Exception{ConfigurationManager.loadCascadedPropertiesFromResources("newconfig");
}

有了此更改,以前的测试就可以了。

另一个选择是提供一个系统属性,以指示要从类路径加载的属性文件的名称:

System.setProperty("archaius.configurationSource.defaultFileName", "newconfig.properties");

覆盖环境

现在,我们如何覆盖不同应用程序环境的属性– Archaius提供了一项简洁的功能,可以加载基本属性文件,然后根据上下文对其进行覆盖。 更多细节在这里 。 为了说明这一点,请考虑两个文件,一个包含默认值,一个包含“测试”环境的替代文件。

sample.properties

sampleprop=propvalue
@next=sample-${@environment}.properties

sample-test.properties

sampleprop=propvalue-test

请参阅默认文件@ next = sample- $ {@ environment} .properties末尾的符号,这是一种向Archaius指示需要根据已解析的@environment参数加载更多属性的方法。 可以通过两种方式注入此参数,以下测试证明了这一点:

@Before
public void setUp() throws Exception{ConfigurationManager.getConfigInstance().setProperty("@environment", "test");ConfigurationManager.loadCascadedPropertiesFromResources("sample");
}@Test
public void testBasicStringPropsInTestEnvironment() throws Exception {DynamicStringProperty sampleProp = DynamicPropertyFactory.getInstance().getStringProperty("sampleprop", "");assertThat(sampleProp.get(), equalTo("propvalue-test"));
}

现在,必须通过调用ConfigurationManager.loadCascadedPropertiesFromResources来加载基本属性文件本身。 。

结论

这些本质上是Netflix Archaius的基础知识,当然还有很多可以从Archaius github网站上的Wiki中收集到的。

  • 如果您有兴趣进一步探索此处显示的示例,可以在此github项目中找到它们。

翻译自: https://www.javacodegeeks.com/2015/05/netflix-archaius-for-property-management-basics.html

netflix

netflix_Netflix Archaius用于物业管理–基础知识相关推荐

  1. Netflix Archaius用于物业管理–基础知识

    Netflix Archaius提供了一组精巧的功能,可将动态属性加载到应用程序中. 这篇博客文章只是我所了解的Archaius范围的文档,比我在这里所记录的内容要多得多,但这应该提供一个很好的开始: ...

  2. 巨型计算机语言主要应用于,计算机应用基础知识复习题

    练习题 1.1选择题 1.计算机科学的奠基人是( ). A.查尔斯 巴贝奇 B.图灵 C.阿塔诺索夫 D.冯 诺依曼 2.( ) 是现代通用计算机的雏形. A.宾州大学于1946年2月研制成功的ENI ...

  3. 【深入剖析Tomcat笔记】第一篇 基础知识储备

    基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...

  4. 自用的快速复习Java基础知识,不适用于每一个人

    自用的快速复习java基础知识,不适用于每一个人 问题背景 1. 类定义出来的变量称为**对象** [IDEA安装](https://www.jb51.net/article/193853.htm) ...

  5. 房产经纪人必备——房地产基础知识大全(建议收藏)

    一.房地产基础专业知识 1.房地产:指房产和地产的总称(又称不动产). 2.房地产的三种存在形态: 单纯的土地.单纯的房屋.土地房屋的综合体 3.房地产的特征: a.房地产位置的固定性(土地不可移,房 ...

  6. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...

    <计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...

  9. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

最新文章

  1. AI一眼识别这是什么鸟 “我们来找茬”十级选手诞生
  2. 灵活运用分布式锁解决数据重复插入问题
  3. 优化 bulk insert
  4. 更新至Android Studio4.1后发现as打不开的解决方案
  5. nat123软件windows版
  6. Android开源库--Gson谷歌官方json解析库
  7. RSTP比STP快在哪?
  8. 留言板 HTML5代码
  9. android 进度gif,Android NumberProgressBar:动态移动显示百分比进度的进度条
  10. 王道训练营作业 C++
  11. DM6437 平台概况
  12. 重庆万州公交车坠江原因公布:乘客与司机激烈争执互殴致车辆失控
  13. iphone 蓝牙开发 总结
  14. java游戏 超级酒吧女生,酒吧游戏你知道多少?22个游戏你玩过几个?
  15. Python地理地图可视化:folium把百度地图中国城市中心经纬度解析出来并在地图上展示(三)
  16. PYNQ-Z2上手笔记之系统安装
  17. 网站压力测试--abtest测试详解abtest
  18. 程序员写代码要写注释吗?写你就输了
  19. 接口自动化——one
  20. Hexo自动为站内链接加上nofollow插件

热门文章

  1. NOI.AC-保镖【贪心,对顶堆】
  2. 亿些模板【字符串+其他】
  3. 【2018.3.17】模拟赛之一-ssl2574jzoj1368 无限序列【斐波那契数列】
  4. 【斜率优化】Cats Transport(luogu-CF 311B)
  5. Wannafly 挑战赛27 题解
  6. 2016陕西省ACM省赛 HE 字符串处理 删除注释
  7. Zookeeper超详细的面试题
  8. 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketExceptionsocket closed
  9. 高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom
  10. 漫画:什么是HashMap