Archaius支持的配置属性
Archaius考虑类似于config.properties的其他配置文件 ,我们可以定义 archaius.configurationSource.additionalUrls系统属性。
该值被解析为由逗号分隔的URL列表,因此,例如,我们可以在启动应用程序时添加此系统属性:
-Darchaius.configurationSource.additionalUrls="classpath:other-dir/extra.properties,file:///home/user/other-extra.properties"
Archaius将首先读取config.properties文件,然后按指定的顺序读取其他文件。因此,后面文件中定义的属性将优先于先前的属性。
我们可以使用几个其他系统属性来配置Archaius默认配置的各个方面:
- archaius.configurationSource.defaultFileName:类路径中的默认配置文件名
- archaius.fixedDelayPollingScheduler.initialDelayMills:读取配置源之前的初始延迟
- archaius.fixedDelayPollingScheduler.delayMills:两次读取源之间的延迟; 默认值为1分钟
使用spring 添加其他的数据源
- Spring定义的Composite Configuration中的最高配置是在上下文中定义的 AbstractConfiguration bean。
- 因此,我们需要做的就是使用Archaius提供的一些功能将这个Apache的抽象类的实现添加到我们的Spring Context中,Spring的自动配置会自动将它添加到托管配置属性中。
- 为了简单起见,我们将看到一个示例,我们配置一个类似于默认config.properties的属性文件,但其优先级高于Spring环境和应用程序属性的其余部分:
- 若是jdbc数据源 使用 JDBCConfigurationSource
使用Archaius已经提供的JDBCConfigurationSource,然后我们注册使用新的配置 ConfigurationManager。
执行此操作后,我们可以从数据库中获取任何属性,就像我们对属性文件所做的那样(即使用 DynamicPropertyFactory)。
1⃣️ 测试
2⃣️ 通过JMX将配置注册为MBean
- Archaius提供的另一个非常酷的功能是可以通过JMX 将我们的配置注册为 MBean。
- 我们可以默认设置系统属性 archaius.dynamicPropertyFactory.registerConfigWithJMX = true或使用ConfigJMXManager.registerConfigMbean(config)进行编程。
- 执行此操作后,我们可以通过JConsole连接,不仅可以获取所有属性的值,还可以更新它们并查看它们在Archaius中反映的新值。例如,这将允许我们在运行时更改属性文件中静态定义的属性值,而无需服务器推送。我们可以稍微修改一下ApplicationConfig类来添加一个main方法,该方法将持续运行打印不同属性的值,这样将允许我们在JConsole中使用。
源码地址:
https://gitee.com/pingfanrenbiji/java-samples.githttps://gitee.com/pingfanrenbiji/spring-cloud-examples/tree/master/spring-cloud-archaius/simple_config
参考文章
https://www.jianshu.com/p/1e340e931730https://www.jianshu.com/p/f9d7500920a9