Spring Cloud Archaius 多配置源收集 原理简介(一)

简介: 功能强大的配置管理库 可用于从许多不同来源收集配置属性的框架,提供对配置信息的快速及线程安全访问Archaius可以从多个动态源中检索属性、允许属性在运行时动态更改,使系统无需重新启动应用程序即可获得这些变化(异构的属性源,运行时更改等)

概述

  • 功能强大的配置管理库 可用于从许多不同来源收集配置属性的框架,提供对配置信息的快速及线程安全访问
  • Archaius可以从多个动态源中检索属性、允许属性在运行时动态更改,使系统无需重新启动应用程序即可获得这些变化(异构的属性源,运行时更改等)

功能

  • 动态和类型属性
  • 在属性改变时调用的回调机制
  • 动态配置源(如URL,JDBC和Amazon DynamoDB)的实现
  • Spring Boot Actuator或JConsole可以访问的JMX MBean,用于检查和操作属性
  • 动态属性验证

添加依赖

微信图片_20220421225508.png

微信图片_20220421225512.png

用法

  • 一旦我们添加了所需的依赖项,我们就能够访问框架管理的属性:

微信图片_20220421225516.png

  • 默认情况下,它动态管理应用程序类路径中名为config.properties的文件中定义的所有属性。

所以我们将它添加到我们的资源文件夹中,其中包含一些任意属性:

springcloud.archaius.properties.one=one FROM:config.properties
springcloud.archaius.properties.three=three FROM:config.properties
  • 指定读取的配置文件

1⃣️ 可以通过 archaius.configurationSource.defaultFileName 指定读取的配置文件 在启动应用程序时将其作为参数传递给vm

2⃣️写在代码本身中

微信图片_20220421225521.png

3⃣️ 多个配置文件 指定加载顺序

微信图片_20220421225524.png

使用键“@ next = nextFile.properties”指定一个特殊属性来告诉Archaius哪个是应该加载的下一个文件。

  • 需要一种在任何特定时刻检查属性值的方法。在这种情况下,我们将创建一个RestController,将值作为JSON响应检索:

微信图片_20220421225528.png

微信图片_20220421225532.png

修改属性 无需重新启动服务 在一分钟左右之后,对端点的调用应检索出新值

工作原理

  • 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 来监控属性并与之交互。
相关文章
|
1月前
|
XML Java 开发者
Spring Boot开箱即用可插拔实现过程演练与原理剖析
【11月更文挑战第20天】Spring Boot是一个基于Spring框架的项目,其设计目的是简化Spring应用的初始搭建以及开发过程。Spring Boot通过提供约定优于配置的理念,减少了大量的XML配置和手动设置,使得开发者能够更专注于业务逻辑的实现。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,为开发者提供一个全面的理解。
34 0
|
1月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
50 0
|
4天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
41 14
|
1天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
16 6
|
3天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
28 3
|
20天前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
31 6
|
20天前
|
Java 关系型数据库 MySQL
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
39 5
|
20天前
|
缓存 监控 Java
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
31 5
|
25天前
|
Java 开发者 Spring
Spring AOP 底层原理技术分享
Spring AOP(面向切面编程)是Spring框架中一个强大的功能,它允许开发者在不修改业务逻辑代码的情况下,增加额外的功能,如日志记录、事务管理等。本文将深入探讨Spring AOP的底层原理,包括其核心概念、实现方式以及如何与Spring框架协同工作。
|
3月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
下一篇
DataWorks