netflix_Netflix Archaius用于物业管理–基础知识
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用于物业管理–基础知识相关推荐
- Netflix Archaius用于物业管理–基础知识
Netflix Archaius提供了一组精巧的功能,可将动态属性加载到应用程序中. 这篇博客文章只是我所了解的Archaius范围的文档,比我在这里所记录的内容要多得多,但这应该提供一个很好的开始: ...
- 巨型计算机语言主要应用于,计算机应用基础知识复习题
练习题 1.1选择题 1.计算机科学的奠基人是( ). A.查尔斯 巴贝奇 B.图灵 C.阿塔诺索夫 D.冯 诺依曼 2.( ) 是现代通用计算机的雏形. A.宾州大学于1946年2月研制成功的ENI ...
- 【深入剖析Tomcat笔记】第一篇 基础知识储备
基础知识储备 最近突然在想,做了这么久的WEB相关,像tomcat.apache这些服务器究竟是什么东西,恰好碰到<How Tomcat Works>(中文版<深入剖析Tomcat& ...
- 自用的快速复习Java基础知识,不适用于每一个人
自用的快速复习java基础知识,不适用于每一个人 问题背景 1. 类定义出来的变量称为**对象** [IDEA安装](https://www.jb51.net/article/193853.htm) ...
- 房产经纪人必备——房地产基础知识大全(建议收藏)
一.房地产基础专业知识 1.房地产:指房产和地产的总称(又称不动产). 2.房地产的三种存在形态: 单纯的土地.单纯的房屋.土地房屋的综合体 3.房地产的特征: a.房地产位置的固定性(土地不可移,房 ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...
<计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...
- python常用变量名_python基础知识整理
Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...
最新文章
- AI一眼识别这是什么鸟 “我们来找茬”十级选手诞生
- 灵活运用分布式锁解决数据重复插入问题
- 优化 bulk insert
- 更新至Android Studio4.1后发现as打不开的解决方案
- nat123软件windows版
- Android开源库--Gson谷歌官方json解析库
- RSTP比STP快在哪?
- 留言板 HTML5代码
- android 进度gif,Android NumberProgressBar:动态移动显示百分比进度的进度条
- 王道训练营作业 C++
- DM6437 平台概况
- 重庆万州公交车坠江原因公布:乘客与司机激烈争执互殴致车辆失控
- iphone 蓝牙开发 总结
- java游戏 超级酒吧女生,酒吧游戏你知道多少?22个游戏你玩过几个?
- Python地理地图可视化:folium把百度地图中国城市中心经纬度解析出来并在地图上展示(三)
- PYNQ-Z2上手笔记之系统安装
- 网站压力测试--abtest测试详解abtest
- 程序员写代码要写注释吗?写你就输了
- 接口自动化——one
- Hexo自动为站内链接加上nofollow插件
热门文章
- NOI.AC-保镖【贪心,对顶堆】
- 亿些模板【字符串+其他】
- 【2018.3.17】模拟赛之一-ssl2574jzoj1368 无限序列【斐波那契数列】
- 【斜率优化】Cats Transport(luogu-CF 311B)
- Wannafly 挑战赛27 题解
- 2016陕西省ACM省赛 HE 字符串处理 删除注释
- Zookeeper超详细的面试题
- 解决idea启动项目报错:Unable to open debugger port(127.0.0.1:60157):java.net.SocketExceptionsocket closed
- 高级JAVA码农必须搞清楚它们的区别:instanceof、isInstance、isAssignableFrom
- 漫画:什么是HashMap