代码与外部配置分离框架介绍

在软件开发过程中,代码与配置的管理是一个重要的议题。配置管理不仅需要确保配置的安全性和正确性,同时也要支持动态更新和多源配置。本文将介绍一种名为SCF(Simple Configuration Facade)的框架,它类似于Java中的SLF4J(Simple Logging Facade for Java),在配置管理领域扮演着相似的角色。SCF的核心理念是将代码与外部配置分离,使得代码可以通过属性来使用配置,而不需要关心配置的具体来源和方式。

使用方式

SCF框架支持多种编程语言,包括Java和.NET。以下是一些使用示例的链接:

  • Java:
  • .NET:
  • 示例:

特性

SCF框架具有以下特性:

  • 强类型:核心抽象是Property,具有强类型的键和值。
  • 安全性:可以使用值过滤器来防止配置错误的属性值。
  • 动态性:每个属性都可以是动态的,并且可以监听其变化。
  • 多源配置:可以结合使用多个具有不同优先级的配置源。属性值根据它们的优先级自动计算。
  • 可扩展性:scf-core只包含一些接口抽象和默认实现。所有关键概念都是可扩展的(配置管理器、配置源、属性等)。
  • 轻量级:不使用线程,只使用少量内存来缓存属性。
  • 并发性:所有管理器/属性API都是线程安全的,并且具有O(1)复杂度。
  • 易用性:scf-simple提供了最常用的简单Property的实现:属性文件、内存映射、系统属性、环境变量等。

核心概念

以下是SCF框架的一些核心概念:

配置项在代码中独立使用,具有唯一的Property Config和强类型的值。代码可以监听动态变化的属性。动态属性的值由配置管理器自动更新。

属性的配置包括以下部分:

  • 键(Key):在配置管理器中唯一标识一个属性,可以是字符串或其他强类型对象。
  • 值类型(Value Type):属性的值类型。
  • 默认值(Default Value):当属性在任何配置源中未配置时使用。
  • 值转换器(Value Converter):将一种值类型转换为另一种类型,例如源具有,但代码需要,可以使用转换器自动转换值。
  • 值过滤器(Value Filter):有机会检查从配置源获取的值,主要用于验证值。

属性可以通过多种方式配置。例如,内存中的HashMap、属性文件、环境变量、Java系统属性、YAML文件等。可以同时使用多种方式!每种方式都是一个配置源,每个源负责为属性提供值。

配置管理器是代码的配置门面。代码从管理器获取属性,而不需要关心属性是如何/在哪里配置的。代码可以有一个或多个管理器,每个组件可以有不同的管理器。管理器可以共享/从一个组件传递到另一个组件。

管理器可以管理多个配置源。不同的源具有不同的优先级。管理器按照源优先级的顺序获取属性值。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485