概述
- 功能强大的配置管理库 可用于从许多不同来源收集配置属性的框架,提供对配置信息的快速及线程安全访问
- Archaius可以从多个动态源中检索属性、允许属性在运行时动态更改,使系统无需重新启动应用程序即可获得这些变化(异构的属性源,运行时更改等)
功能
- 动态和类型属性
- 在属性改变时调用的回调机制
- 动态配置源(如URL,JDBC和Amazon DynamoDB)的实现
- Spring Boot Actuator或JConsole可以访问的JMX MBean,用于检查和操作属性
- 动态属性验证
添加依赖
用法
- 一旦我们添加了所需的依赖项,我们就能够访问框架管理的属性:
- 默认情况下,它动态管理应用程序类路径中名为config.properties的文件中定义的所有属性。
所以我们将它添加到我们的资源文件夹中,其中包含一些任意属性:
springcloud.archaius.properties.one=one FROM:config.properties springcloud.archaius.properties.three=three FROM:config.properties
- 指定读取的配置文件
1⃣️ 可以通过 archaius.configurationSource.defaultFileName 指定读取的配置文件 在启动应用程序时将其作为参数传递给vm
2⃣️写在代码本身中
3⃣️ 多个配置文件 指定加载顺序
使用键“@ next = nextFile.properties”指定一个特殊属性来告诉Archaius哪个是应该加载的下一个文件。
- 需要一种在任何特定时刻检查属性值的方法。在这种情况下,我们将创建一个RestController,将值作为JSON响应检索:
修改属性 无需重新启动服务 在一分钟左右之后,对端点的调用应检索出新值
工作原理
- Archaius是Apache的Commons Configuration库的扩展,添加了一些很好的功能,如动态源的轮询框架,具有高吞吐量和线程安全的实现。
- 然后 spring-cloud-netflix-archaius 库进入,合并所有不同的属性源,并使用这些源自动配置Archaius工具。
Netflix Archaius库
- 它定义了一个复合配置,是可以从不同来源获得的各种配置的集合。
- 其中一些配置源可以支持在运行时轮询更改。Archaius提供接口和一些预定义的实现来配置这些类型的源。
- 源集合是分层的,因此如果属性存在于多个配置中,则最终值将是最顶部插槽中的值。
- ConfigurationManager处理系统范围的配置和部署上下文。它可以安装最终的复合配置,或检索已安装的复合配置进行修改。
Spring Cloud Archaius库
主要任务是将所有不同的配置源合并为 ConcurrentCompositeConfiguration,并使用ConfigurationManager进行安装 。
库定义源的优先顺序是:
- 上下文中定义的任何Apache公共配置AbstractConfiguration bean
- Autowired Spring ConfigurableEnvironment中定义的所有源代码
- 默认的Archaius源,我们在上面的例子中看到过
- Apache的SystemConfiguration和EnvironmentConfiguration 源
- Spring Cloud库提供的另一个有用功能是定义一个Actuator Endpoint 来监控属性并与之交互。