社区协作配置标准 Tamaya

码农软件 · 软件分类 · 其他开发相关 · 2019-10-17 22:28:37

软件介绍

Apache Tamaya是一个孵化项目,旨在提供一个非常强大而灵活的配置解决方案。

核心要点

  • 配置是一个横切性的关注点,跨所有的应用类型,但是并没有Java标准来管理配置;

  • Apache Tamaya是一个孵化项目,旨在提供一个社区协作的配置标准;

  • 如果属性没有定义的话,将会使用默认属性;

  • 如果出现冲突的话,会有默认的合理值,但是默认行为可以通过自定义的映射器进行重写;

  • 支持各种运行时环境的编程API,比如独立应用、CDI和Spring等。

Credit Suisse和Oracle曾试图为Java EE的配置创建一个宏伟的JSR标准,现在距离这个计划的破产已经过去了两年的时间。导致这个计划破产的原因很多,我们在这里的关注点也不是讨论它的细节。需要说明的是,尽管官方的JSR从未被JCP执行委员会所批准,但是标准化Java配置的努力却从未停止过。在本文中,我将会关注后续的工作以及这个初始项目的当前状态。

配置标准为何如此重要?

配置是一个通用的横切性关注点,跨所有的应用类型。属性通常会以key = value的形式进行指定,这些属性会以文件的形式来提供并且会加载到一个Java Properties对象中。令人遗憾的是,OSGi、Spring、Java EE、SE以及其他在Java中运行的框架和解决方案都提供了自己的配置API和格式。其中有很多会使用专有的XML格式,另外一些则可能使用更为现代化的格式,比如Yaml。Java EE甚至不支持大多数场景下的动态和远程配置。在应用中,组合使用不同的框架通常都是非常繁琐的,这要归因于不同的配置格式、存放位置以及冗余性。这都会增加不必要的复杂性并且易于出现错误。它会影响到某个应用内部的代码编写,同时还会影响它与周边系统的集成。在过去的二十年间,Java在很多领域都做出了巨大的贡献,为各种类型的应用开发构建了无与伦比的生态系统。这不免令人觉得有些怪异,在配置管理这样一个通用关注点上居然缺乏一个标准API,如果能有一个这样的标准的话,应用程序就不用构建自己的配置方案了,同时也可以简化与不同利益相关者所提供的模块进行集成。

动因与背景

在如何进行配置以及配置到底该是什么样子方面,所涉及到的意见差别很大。因此,配置标准不应该关注于配置什么内容或何时进行配置。以此作为驱动力,我们将已有的知识和实验性代码转移到了一个新的孵化项目中,这个项目的名称叫做Apache Tamaya。我们早期的讨论集中在已有的想法和需求上,但最终,我们后退了一步,从头开始重新定义使用场景,打造了一个崭新的实现。鉴于配置管理是使用最广泛的横切性关注点之一,我们希望和期待这项工作能够成为某种形式的标准,让整个Java生态系统都能从中受益。

Tamaya的一些特性包括:

  • 定义了一组配置注解(tamaya-inject-api),它们可以添加到客户端代码中,从而注入配置的值。注解会按照一种统一的方式来运行,不管你的代码是作为简单老式的Java SE方式运行,还是运行在CDI容器或Spring环境之中。它们甚至还支持OSGi服务。

  • Tamaya所支持的并不局限于String值,可以是任意的Java类型,只要我们所注册的PropertyConverters能够从原始的配置值(String类型)衍生出类型化的值就可以,例如将其作为Date或URL。

  • 此外,Apache Tamaya还提供了无数的扩展和功能集成,这样的话就能根据用户的需求自定义运行时的配置(这样的话,允许用户为他们的系统选择最合适功能,从而解决了配置复杂性所面临的挑战)。这里很棒的一点在于所有的扩展都不会依赖于核心模块,除非运行在测试作用域(test scope)中,这个作用域提供了一个功能性的实现,用来执行我们的测试用例。

本文地址:https://codercto.com/soft/d/16990.html

HTML5

HTML5

Matthew David / Focal Press / 2010-07-29 / USD 39.95

Implement the powerful new multimedia and interactive capabilities offered by HTML5, including style control tools, illustration tools, video, audio, and rich media solutions. Understand how HTML5 is ......一起来看看 《HTML5》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具